HTTPUploadFile() has several string, file stream, and buffer variables. Also WebResponse variable. Instructions related to form data. Lots of instructions related to input/output files, streams, web requests, and web responses. Also 5 interesting calls highlighted in yellow.
RaiseUploadStartEvent->RaiseUploadFinishEvent->RaiseDownloadStartEvent->RaiseDownloadFinishEvent form a logical chain of events except in section 2 there is an extra call to RaiseDownloadFinishEvent(bool). Why it's there at the end of a section related to uploading? Notice that area is a catch (the catches are listed at the bottom of section 4 image).
The try-catch pair defines a section of code as a try and a following section as catch. Only if there is an exception while executing the code in the try section then the catch section will execute, catching the error. In the catch a flag is set to 0 or False (L_034a load 0, L_034b store it in location of flag variable) and handed to RaiseDownloadFinishEvent(bool). When there is an error, it is jumping to the end of the chain of events (and passing the value of False). Notice also in the first section the value of flag was originally set to True by instructions L_01e4 ldc.i4.1 (load constant 1, True, on the stack) and stloc.s flag (take a value from the stack and store it in location of the variable flag).
For the patch we will follow their example of jumping to the end of the chain (but making sure flag is set to True).
In the Reflexil pane highlight line 168, instruction 01cb, right click, choose edit.
click in the operand box on RaiseUploadStartEvent, in the pop up choose RaiseUploadFinishEvent, click ok, click update.
And for the jump right click the newly created line and choose create new.
Fill in the boxes and click insert after selection. Save the changes.