Function at 0x100244f0
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x64c
push ebx
mov ebx, dword [esp + 0x660]
push ebp
push esi
cmp ebx, 3
push edi
mov esi, ecx
je 0x1002452c
cmp ebx, 2
je 0x10024629
cmp ebx, 1
je 0x10024629
pop edi
pop esi
pop ebp
mov eax, 0x10000
pop ebx
add esp, 0x64c
ret 0x10
mov eax, dword [esi + 4]
mov edi, dword [esp + 0x660]
cmp edi, eax
je 0x100245a4
cmp eax, 0xffffffff
je 0x1002454a
mov eax, dword [esi]
push eax
call fcn.10023c30
add esp, 4
mov eax, dword [esi]
mov dword [esi + 4], 0xffffffff
cmp edi, dword [eax + 4]
jl 0x1002456a
pop edi
pop esi
pop ebp
mov eax, 0x10000
pop ebx
add esp, 0x64c
ret 0x10
cmp edi, dword [eax + 0x10]
jge 0x10024578
push eax
call fcn.100234f0
add esp, 4
mov eax, dword [esi]
cmp dword [eax + 0x10], edi
jge 0x1002458f
push eax
call fcn.10023540
mov eax, dword [esi]
add esp, 4
cmp dword [eax + 0x10], edi
jl 0x1002457f
mov ecx, dword [esi + 0x23c]
mov edx, dword [esi]
push ecx
push edx
call fcn.100237c0
add esp, 8
mov dword [esi + 4], edi
mov ecx, dword [esp + 0x668]
mov edx, dword [esp + 0x664]
lea eax, [esp + 0x13]
push eax
mov eax, dword [esi]
push ecx
push edx
push eax
call fcn.10023970
mov edi, eax
add esp, 0x10
test edi, edi
jg 0x100245dc
mov ecx, dword [esi]
push ecx
call fcn.10023c30
add esp, 4
mov dword [esi + 4], 0xffffffff
mov al, byte [esp + 0x13]
test al, al
je 0x100245f3
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x64c
ret 0x10
test edi, edi
jle 0x10024609
pop edi
pop esi
pop ebp
mov eax, 0x600
pop ebx
add esp, 0x64c
ret 0x10
mov eax, edi
pop edi
sub eax, 0xffffff96
pop esi
neg eax
sbb eax, eax
pop ebp
and eax, 0x4fff000
pop ebx
add eax, 0x1000
add esp, 0x64c
ret 0x10
mov eax, dword [esi + 4]
or edi, 0xffffffff
cmp eax, edi
je 0x1002463e
mov edx, dword [esi]
push edx
call fcn.10023c30
add esp, 4
mov eax, dword [esi]
mov dword [esi + 4], edi
mov edi, dword [esp + 0x660]
cmp edi, dword [eax + 4]
jl 0x10024661
pop edi
pop esi
pop ebp
mov eax, 0x10000
pop ebx
add esp, 0x64c
ret 0x10
cmp edi, dword [eax + 0x10]
jge 0x1002466f
push eax
call fcn.100234f0
add esp, 4
mov eax, dword [esi]
cmp dword [eax + 0x10], edi
jge 0x10024686
push eax
call fcn.10023540
mov eax, dword [esi]
add esp, 4
cmp dword [eax + 0x10], edi
jl 0x10024676
lea eax, [esp + 0x224]
mov ecx, esi
push eax
push edi
call fcn.10023e90
test byte [esp + 0x430], 0x10
je 0x1002470f
cmp ebx, 1
jne 0x100246b4
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x64c
ret 0x10
mov ecx, dword [esp + 0x664]
mov ax, word [ecx]
cmp ax, 0x2f
je 0x100246d6
cmp ax, 0x5c
je 0x100246d6
test ax, ax
je 0x100246f0
cmp word [ecx + 2], 0x3a
jne 0x100246f0
push ecx
push 0
call fcn.10024400
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64c
ret 0x10
add esi, 0x244
push ecx
push esi
call fcn.10024400
add esp, 8
xor eax, eax
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64c
ret 0x10
cmp ebx, 1
jne 0x10024722
mov ebx, dword [esp + 0x664]
xor ebp, ebp
jmp 0x100247b9
mov edi, dword [esp + 0x664]
xor ebp, ebp
mov ebx, edi
mov ecx, edi
mov ax, word [edi]
cmp ax, bp
je 0x10024752
cmp ax, 0x2f
je 0x10024743
cmp ax, 0x5c
jne 0x10024746
lea ebx, [ecx + 2]
mov ax, word [ecx + 2]
add ecx, 2
cmp ax, bp
jne 0x10024737
lea ecx, [esp + 0x1c]
push edi
push ecx
call fcn.1002e4bf
add esp, 8
cmp ebx, edi
jne 0x100247d0
mov word [esp + 0x1c], bp
lea eax, [esp + 0x1c]
lea edi, [esi + 0x244]
push ebx
push eax
push edi
lea ecx, [esp + 0x460]
push str._s_s_s
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
lea edx, [esp + 0x30]
push edx
push edi
call fcn.10024400
add esp, 0x1c
mov eax, dword [esp + 0x430]
push ebp
push eax
push 2
push ebp
push ebp
lea ecx, [esp + 0x468]
push 0x40000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x1002482d
pop edi
pop esi
pop ebp
mov eax, 0x200
pop ebx
add esp, 0x64c
ret 0x10
mov edx, ebx
sub edx, edi
sar edx, 1
mov word [esp + edx*2 + 0x1c], bp
mov ax, word [esp + 0x1c]
cmp ax, 0x2f
je 0x10024801
cmp ax, 0x5c
je 0x10024801
cmp ax, bp
je 0x10024769
cmp word [esp + 0x1e], 0x3a
jne 0x10024769
lea eax, [esp + 0x1c]
push ebx
push eax
lea ecx, [esp + 0x45c]
push str._s_s
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
lea edx, [esp + 0x2c]
push edx
push ebp
call fcn.10024400
add esp, 0x18
jmp 0x10024797
mov edx, dword [esi + 0x23c]
mov eax, dword [esi]
push edx
push eax
call fcn.100237c0
mov eax, dword [esi + 0x240]
add esp, 8
cmp eax, ebp
jne 0x1002485c
push 0x4000
call fcn.1011fa4c
add esp, 4
mov dword [esi + 0x240], eax
mov dword [esp + 0x14], ebp
mov ebp, dword [sym.imp.KERNEL32.dll_WriteFile]
mov edx, dword [esi + 0x240]
mov eax, dword [esi]
lea ecx, [esp + 0x13]
push ecx
push 0x4000
push edx
push eax
call fcn.10023970
mov edi, eax
add esp, 0x10
cmp edi, 0xffffff96
je 0x100248b3
test edi, edi
jl 0x100248c7
jle 0x100248a5
mov edx, dword [esi + 0x240]
lea ecx, [esp + 0x18]
push 0
push ecx
push edi
push edx
push ebx
call ebp
test eax, eax
je 0x100248bd
mov al, byte [esp + 0x13]
test al, al
jne 0x100248d1
test edi, edi
je 0x100248c7
jmp 0x10024866
mov dword [esp + 0x14], 0x1000
jmp 0x100248f0
mov dword [esp + 0x14], 0x400
jmp 0x100248f0
mov dword [esp + 0x14], 0x5000000
jmp 0x100248f0
lea eax, [esp + 0x444]
lea ecx, [esp + 0x434]
push eax
lea edx, [esp + 0x440]
push ecx
push edx
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
cmp dword [esp + 0x66c], 1
je 0x10024901
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esi]
push eax
call fcn.10023c30
mov eax, dword [esp + 0x18]
add esp, 4
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x64c
ret 0x10