Function at 0x4039d0
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x1e4
push esi
mov esi, dword [esp + 0x1ec]
mov eax, 0x10
push edi
mov word [esp + 0x5c], ax
mov edi, 0x84
mov eax, 0x50
mov word [esp + 0xc4], di
cmp byte [esi], 0
mov word [esp + 8], ax
mov word [esp + 0x70], ax
je 0x4042cf
xor eax, eax
mov word [esp + 0xa], ax
mov eax, dword [esi + 4]
lea ecx, [eax + 0x53]
cmp ecx, 0x52
ja case.default.0x403a24
jmp dword [ecx*4 + 0x404308]
push 0x4310e0
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431130
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431180
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x4311d0
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431220
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.math
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.pginfo
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431310
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.rend
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.video
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431400
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.epl8543
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x4314a0
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.centronics
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431540
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.stuff
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.dbuf
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.dcont
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.vect
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.ci3000
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431720
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.foto
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.fifi
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431810
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431860
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x4318b0
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.slide
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.csrv
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.dj850
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.dr11w
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.lc3000
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.cirrus
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.fsimio
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.pdoc
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.phot
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.pwrio
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431c20
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.chess
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.chessv_prog
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.motio
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431d60
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.tric
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.eball
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x431e50
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.flop
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.tsnet
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.spball
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.picprg
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.ptap
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.u1ex
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.irlog
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.rloc_prog
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.prba
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.ushos
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.sentw
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.usbcan
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.ioext
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x4322b0
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.touchtag
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.ebox
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.emcan
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.escr
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.email
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.utest
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.j1test
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.jcan
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.jowags
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.displ
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.hier
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.mdev
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.strflex
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.code
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.fline
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.pntcalc
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push 0x432800
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.menu
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.eagle
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.part
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.db25
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.dongsim
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.jrescal
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.canmux
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
push str.s5lib
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
jmp 0x4040cb
test eax, eax
jle 0x4041cc
push str.subsys
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_appends_8
push dword [esi + 4]
lea eax, [esp + 0x60]
push eax
call sym.test_usbprog.exe__string_f_int_8
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0xc]
push eax
call sym.test_usbprog.exe__string_append_8
lea eax, [esp + 8]
push eax
call sym.test_usbprog.exe__string_fill_4
xor eax, eax
mov word [esp + 0x72], ax
cmp dword [esi + 8], eax
jle 0x4041cc
push 0x432b20
lea eax, [esp + 0x74]
push eax
call sym.test_usbprog.exe__string_appends_8
push dword [esi + 8]
lea eax, [esp + 0x60]
push eax
call sym.test_usbprog.exe__string_f_int_8
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0x74]
push eax
call sym.test_usbprog.exe__string_append_8
lea eax, [esp + 0x70]
push eax
call sym.test_usbprog.exe__string_fill_4
movups xmm0, xmmword [esp + 0xc]
lea eax, [esi + 0x14]
push dword [esi + 0x10]
movups xmmword [esp + 0x1a0], xmm0
push eax
movups xmm0, xmmword [esp + 0x24]
lea eax, [esp + 0x154]
push eax
movups xmmword [esp + 0x1b8], xmm0
lea eax, [esp + 0x1a8]
movups xmm0, xmmword [esp + 0x38]
push eax
movups xmmword [esp + 0x1cc], xmm0
movups xmm0, xmmword [esp + 0x4c]
movups xmmword [esp + 0x1dc], xmm0
movups xmm0, xmmword [esp + 0x5c]
movups xmmword [esp + 0x1ec], xmm0
movups xmm0, xmmword [esp + 0x84]
movups xmmword [esp + 0x15c], xmm0
movups xmm0, xmmword [esp + 0x94]
movups xmmword [esp + 0x16c], xmm0
movups xmm0, xmmword [esp + 0xa4]
movups xmmword [esp + 0x17c], xmm0
movups xmm0, xmmword [esp + 0xb4]
movups xmmword [esp + 0x18c], xmm0
movups xmm0, xmmword [esp + 0xc4]
movups xmmword [esp + 0x19c], xmm0
call sym.test_usbprog.exe__sys_message_parms_16
jmp 0x4042db
xor eax, eax
mov word [esp + 0xc6], ax
lea eax, [esp + 0xc4]
push str.ERROR__subsystem_
push eax
call sym.test_usbprog.exe__string_appends_8
push 0x20
lea eax, [esp + 0xc8]
push eax
call sym.test_usbprog.exe__string_append1_8
push dword [esi + 4]
lea eax, [esp + 0x60]
push eax
call sym.test_usbprog.exe__string_f_int32_8
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0xc8]
push eax
call sym.test_usbprog.exe__string_append_8
push str.__code_
lea eax, [esp + 0xc8]
push eax
call sym.test_usbprog.exe__string_appends_8
push 0x20
lea eax, [esp + 0xc8]
push eax
call sym.test_usbprog.exe__string_append1_8
push dword [esi + 8]
lea eax, [esp + 0x60]
push eax
call sym.test_usbprog.exe__string_f_int32_8
lea eax, [esp + 0x5c]
push eax
lea eax, [esp + 0xc8]
push eax
call sym.test_usbprog.exe__string_append_8
push 0x2e
lea eax, [esp + 0xc8]
push eax
call sym.test_usbprog.exe__string_append1_8
mov ax, word [esp + 0xc6]
cmp ax, di
jle 0x404293
cwde
push 0x4375d4
sub eax, 0x84
push eax
push 0x432c10
call fcn.00401f00
mov ax, word [esp + 0xd2]
add esp, 0xc
test ax, ax
jle 0x4042a6
cmp ax, di
jge 0x4042a2
movsx esi, ax
jmp 0x4042a8
mov esi, edi
jmp 0x4042a8
xor esi, esi
push 1
call fcn.0040a39c
push eax
push esi
lea eax, [esp + 0xd4]
push 1
push eax
call fcn.0040a631
push 0x432c14
call fcn.00401f00
add esp, 0x18
jmp 0x4042db
push dword [esi + 0xc]
call sym.test_usbprog.exe__sys_sys_message_4
test al, al
je 0x4042fc
push dword [esp + 0x200]
push dword [esp + 0x200]
push dword [esp + 0x200]
push dword [esp + 0x200]
call sym.test_usbprog.exe__sys_message_parms_16
pop edi
pop esi
add esp, 0x1e4
ret 0x14