Function at 0x499b60
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x64c
mov eax, dword [0x718924]
xor eax, esp
mov dword [esp + 0x648], eax
push ebx
mov ebx, dword [esp + 0x658]
push ebp
push esi
push edi
mov edi, ecx
mov ecx, dword [esp + 0x66c]
cmp ecx, 3
je 0x499b9b
cmp ecx, 2
je 0x499b9b
cmp ecx, 1
jne 0x499cec
mov eax, dword [edi + 4]
cmp ecx, 3
jne 0x499cc8
mov ebp, dword [esp + 0x660]
cmp ebp, eax
je 0x499c59
cmp eax, 0xffffffff
je 0x499bc5
push dword [edi]
call fcn.0049c9e0
add esp, 4
mov eax, dword [edi]
mov dword [edi + 4], 0xffffffff
cmp ebp, dword [eax + 4]
jge 0x499cec
cmp dword [eax + 0x10], ebp
jle 0x499bea
push eax
call fcn.0049ca60
mov eax, dword [edi]
add esp, 4
cmp dword [eax + 0x10], ebp
jge 0x499c47
mov esi, eax
nop
mov eax, esi
test esi, esi
je 0x499c40
cmp dword [esi + 0x18], 0
je 0x499c40
mov edx, dword [esi + 0x10]
inc edx
cmp edx, dword [esi + 4]
je 0x499c40
mov ecx, dword [esi + 0x50]
mov eax, dword [esi + 0x48]
add ecx, 0x2e
add ecx, dword [esi + 0x4c]
push 0
push 0
push 0
push 0
add eax, ecx
mov dword [esi + 0x10], edx
add dword [esi + 0x14], eax
lea eax, [esi + 0x78]
push 0
push 0
push eax
lea eax, [esi + 0x28]
push eax
push esi
call fcn.0049d310
add esp, 0x24
neg eax
sbb eax, eax
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [edi]
mov esi, eax
cmp dword [eax + 0x10], ebp
jl 0x499bf0
push dword [edi + 0x23c]
push eax
call fcn.0049cab0
add esp, 8
mov dword [edi + 4], ebp
lea eax, [esp + 0x13]
push eax
push dword [esp + 0x66c]
push ebx
push dword [edi]
call fcn.0049ce40
mov esi, eax
add esp, 0x10
test esi, esi
jg 0x499c87
push dword [edi]
call fcn.0049c9e0
add esp, 4
mov dword [edi + 4], 0xffffffff
cmp byte [esp + 0x13], 0
jne 0x499dee
test esi, esi
jle 0x499cb6
mov eax, 0x600
mov ecx, dword [esp + 0x658]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.004cb998
add esp, 0x64c
ret 0x10
cmp esi, 0xffffff96
mov eax, 0x5000000
mov ecx, 0x1000
cmove eax, ecx
jmp 0x499c9b
cmp eax, 0xffffffff
je 0x499cd7
push dword [edi]
call fcn.0049c9e0
add esp, 4
mov esi, dword [edi]
mov ebp, dword [esp + 0x660]
mov dword [edi + 4], 0xffffffff
cmp ebp, dword [esi + 4]
jl 0x499cf3
mov eax, 0x10000
jmp 0x499c9b
cmp dword [esi + 0x10], ebp
jle 0x499d37
mov ecx, esi
test ecx, ecx
je 0x499d34
mov eax, dword [ecx + 0x24]
push 0
push 0
push 0
push 0
push 0
mov dword [ecx + 0x14], eax
lea eax, [ecx + 0x78]
push 0
push eax
lea eax, [ecx + 0x28]
mov dword [ecx + 0x10], 0
push eax
push ecx
call fcn.0049d310
add esp, 0x24
mov ecx, esi
neg eax
sbb eax, eax
inc eax
mov dword [ecx + 0x18], eax
mov esi, dword [edi]
cmp dword [esi + 0x10], ebp
jge 0x499d97
nop dword [eax]
mov eax, esi
test esi, esi
je 0x499d90
cmp dword [esi + 0x18], 0
je 0x499d90
mov edx, dword [esi + 0x10]
inc edx
cmp edx, dword [esi + 4]
je 0x499d90
mov ecx, dword [esi + 0x50]
mov eax, dword [esi + 0x48]
add ecx, 0x2e
add ecx, dword [esi + 0x4c]
push 0
push 0
push 0
push 0
add eax, ecx
mov dword [esi + 0x10], edx
add dword [esi + 0x14], eax
lea eax, [esi + 0x78]
push 0
push 0
push eax
lea eax, [esi + 0x28]
push eax
push esi
call fcn.0049d310
add esp, 0x24
neg eax
sbb eax, eax
inc eax
mov dword [esi + 0x18], eax
mov eax, dword [edi]
mov esi, eax
cmp dword [eax + 0x10], ebp
jl 0x499d40
lea eax, [esp + 0x18]
mov ecx, edi
push eax
push ebp
call fcn.00499190
test byte [esp + 0x224], 0x10
je 0x499df5
cmp dword [esp + 0x66c], 1
je 0x499dee
movzx eax, word [ebx]
cmp eax, 0x2f
je 0x499dd5
cmp eax, 0x5c
je 0x499dd5
test ax, ax
je 0x499dd1
cmp word [ebx + 2], 0x3a
je 0x499dd5
xor dl, dl
jmp 0x499dd7
mov dl, 1
xor ecx, ecx
lea eax, [edi + 0x244]
test dl, dl
push ebx
cmove ecx, eax
push ecx
call fcn.00499050
add esp, 8
xor eax, eax
jmp 0x499c9b
cmp dword [esp + 0x66c], 1
je 0x499f1e
movzx eax, word [ebx]
mov esi, ebx
mov ecx, ebx
test ax, ax
je 0x499e2e
mov edx, eax
cmp dx, 0x2f
je 0x499e1d
cmp dx, 0x5c
jne 0x499e20
lea esi, [ecx + 2]
movzx eax, word [ecx + 2]
add ecx, 2
mov edx, eax
test ax, ax
jne 0x499e11
lea edx, [esp + 0x248]
mov ecx, ebx
sub edx, ebx
nop dword [eax]
movzx eax, word [ecx]
lea ecx, [ecx + 2]
mov word [edx + ecx - 2], ax
test ax, ax
jne 0x499e40
cmp esi, ebx
jne 0x499e60
xor eax, eax
mov word [esp + 0x248], ax
jmp 0x499ea0
mov eax, esi
sub eax, ebx
and eax, 0xfffffffe
cmp eax, 0x208
jae 0x49a001
xor ecx, ecx
mov word [esp + eax + 0x248], cx
mov ax, word [esp + 0x248]
cmp ax, 0x2f
je 0x499ec8
cmp ax, 0x5c
je 0x499ec8
test ax, ax
je 0x499ea0
cmp word [esp + 0x24a], 0x3a
je 0x499ec8
push esi
lea eax, [esp + 0x24c]
push eax
lea ebx, [edi + 0x244]
push ebx
lea eax, [esp + 0x45c]
push 0x686218
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x14
jmp 0x499ee9
push esi
lea eax, [esp + 0x24c]
push eax
lea eax, [esp + 0x458]
push 0x68620c
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
xor ebx, ebx
lea eax, [esp + 0x248]
push eax
push ebx
call fcn.00499050
add esp, 8
lea eax, [esp + 0x450]
push 0
push dword [esp + 0x228]
push 2
push 0
push 0
push 0x40000000
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebx, eax
cmp ebx, 0xffffffff
jne 0x499f2d
mov eax, 0x200
jmp 0x499c9b
push dword [edi + 0x23c]
push dword [edi]
call fcn.0049cab0
add esp, 8
cmp dword [edi + 0x240], 0
jne 0x499f59
push 0x4000
call fcn.004cba04
add esp, 4
mov dword [edi + 0x240], eax
xor ebp, ebp
nop dword [eax + eax]
lea eax, [esp + 0x13]
push eax
push 0x4000
push dword [edi + 0x240]
push dword [edi]
call fcn.0049ce40
mov esi, eax
add esp, 0x10
cmp esi, 0xffffff96
je 0x499fda
test esi, esi
js 0x499fab
jle 0x499fa0
push 0
lea eax, [esp + 0x18]
push eax
push esi
push dword [edi + 0x240]
push ebx
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x499fb2
cmp byte [esp + 0x13], 0
jne 0x499fb9
test esi, esi
jne 0x499f60
mov ebp, 0x5000000
jmp 0x499fdf
mov ebp, 0x400
jmp 0x499fdf
lea eax, [esp + 0x238]
push eax
lea eax, [esp + 0x22c]
push eax
lea eax, [esp + 0x238]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_SetFileTime]
jmp 0x499fdf
mov ebp, 0x1000
cmp dword [esp + 0x66c], 1
je 0x499ff0
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [edi]
call fcn.0049c9e0
add esp, 4
mov eax, ebp
jmp 0x499c9b
call fcn.004cbc73
int3