As I write it, 2 writeups are about using XXE, 2 another about abusing `rand(time(0))` and [one more about intended way](https://ctftime.org/writeup/12776). I solved it in intended way too. For more details, check linked writeup.
Solution idea is that you can compare top drink with top chef-drink so you can use binary search approach to find a chef-drink value in runtime. In my case, I added decreasing powers of 2 while drink was smaller then chef-drink.
Below are the files from the solution: opcode descriptions, solution generator and solution itself.
`lang.xml` — description of all "language" instructions.
``` xml
        <plate>  <宫保鸡丁/>       </plate>
        <plate>  <paella>42</paella>  </plate>
        <plate>  <불고기/>        </plate>
        <plate>  <Борщ/>          </plate>
        <plate>  <दाल/>          </plate>
        <plate>  <ラーメン/>         </plate>
        <plate>  <stroopwafels/>  </plate>
        <plate>  <köttbullar/>    </plate>
        <plate>  <γύρος/>         </plate>
        <plate>  <rösti/>         </plate>
        <plate>  <לאַטקעס/>       </plate>
        <plate>  <poutine/>       </plate>
        <plate>  <حُمُّص/>         </plate>
        <plate>  <æblegrød/>      </plate>```
`gen.py` — solution generator.
``` pythonprog = ['''    <course>        <plate>  <paella>0</paella>  </plate>         <plate>  <paella>0</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>''']
s = '''    <course>        <plate>  <paella>{next_course}</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>{val_to_add}</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>{val_to_add}</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>{this_course}</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>'''
filt = '''    <course>        <plate>  <宫保鸡丁/>       </plate>        <plate>  <Борщ/>          </plate>        <plate>  <宫保鸡丁/>       </plate>        <plate>  <दाल/>          </plate>        <plate>  <宫保鸡丁/>       </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>{finish}</paella>  </plate>        <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>4</paella>  </plate>        <plate>  <stroopwafels/>  </plate>        <plate>  <æblegrød/>      </plate>            <plate>  <paella>0</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>'''
for i in range(30, -1, -2):    prog.append(s.format(this_course=len(prog), next_course=len(prog) + 1, val_to_add=2**i))prog.append(filt.format(finish=len(prog) + 1))prog.append('    <course/>')
with open('sol.xml', 'w') as f:    f.write('\n<meal>\n')    f.write('\n'.join(prog))    f.write('\n    <state/>\n</meal>\n')```
`sol.xml` — generated solution.``` xml
<meal>    <course>        <plate>  <paella>0</paella>  </plate>         <plate>  <paella>0</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>2</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>1073741824</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>1073741824</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>3</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>268435456</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>268435456</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>2</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>4</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>67108864</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>67108864</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>3</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>5</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>16777216</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>16777216</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>4</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>6</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>4194304</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>4194304</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>5</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>7</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>1048576</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>1048576</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>6</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>8</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>262144</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>262144</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>7</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>9</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>65536</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>65536</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>8</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>10</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>16384</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>16384</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>9</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>11</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>4096</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>4096</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>10</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>12</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>1024</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>1024</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>11</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>13</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>256</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>256</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>12</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>14</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>64</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>64</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>13</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>15</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>16</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>16</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>14</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>16</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>4</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>4</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>15</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <paella>17</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>1</paella>  </plate>        <plate>  <rösti/>         </plate>             <plate>  <ラーメン/>         </plate>            <plate>  <æblegrød/>      </plate>            <plate>  <paella>1</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>16</paella>  </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course>        <plate>  <宫保鸡丁/>       </plate>        <plate>  <Борщ/>          </plate>        <plate>  <宫保鸡丁/>       </plate>        <plate>  <दाल/>          </plate>        <plate>  <宫保鸡丁/>       </plate>        <plate>  <paella>1</paella>  </plate>        <plate>  <rösti/>         </plate>        <plate>  <paella>18</paella>  </plate>        <plate>  <paella>1</paella>  </plate>         <plate>  <불고기/>        </plate>             <plate>  <paella>4</paella>  </plate>        <plate>  <stroopwafels/>  </plate>        <plate>  <æblegrød/>      </plate>            <plate>  <paella>0</paella>  </plate>         <plate>  <paella>1</paella>  </plate>         <plate>  <paella>1</paella>  </plate>        <plate>  <æblegrød/>      </plate>        </course>    <course/>    <state/></meal>```