Pat the chicken dry and season all over with salt and pepper. Heat the cooking oil in a wide pot over medium-high heat. Once hot, add the chicken in batches and cook for 3-5 minutes per side until browned all over. The chicken doesn't need to be cooked through. Transfer to a plate, leaving any fond from the chicken in the pot.
Melt the butter into the pot over medium heat. Add the onions and cook, stirring often, for 6-7 minutes until softened.
Reduce heat to low and add the garlic, chili peppers, cinnamon sticks, and all of the remaining spices. Add the browned chicken and toss to coat.
Pour in the chicken stock and bring to a boil, scraping up any browned bits stuck to the bottom of the pot. Reduce heat and simmer for 40-45 minutes or until the chicken is very tender. Add more liquid, as necessary, if the chicken sticks to the pot or the liquid absorbs too quickly. Occasionally taste the sauce and season it according to your preferences.