Function at 0x472910
Capabilities:
Write file on windows

Disassembly:
sub esp, 0x650
mov eax, dword [0x56a260]
xor eax, esp
mov dword [esp + 0x64c], eax
mov eax, dword [esp + 0x654]
push ebx
xor ebx, ebx
cmp eax, ebx
push esi
mov esi, dword [esp + 0x664]
jne 0x472944
mov eax, 0x10000
jmp 0x472bff
cmp dword [eax], 1
je 0x472953
mov eax, 0x80000
jmp 0x472bff
push ebp
push edi
mov edi, dword [eax + 4]
or ebp, 0xffffffff
cmp dword [edi + 4], ebp
je 0x47296b
mov eax, dword [edi]
push eax
call fcn.0046fd40
add esp, 4
mov eax, dword [edi]
mov dword [edi + 4], ebp
mov ebp, dword [esp + 0x668]
cmp ebp, dword [eax + 4]
jl 0x472986
mov eax, 0x10000
jmp 0x472bfd
cmp ebp, dword [eax + 0x10]
jge 0x472994
push eax
call fcn.0046f950
add esp, 4
mov ecx, dword [edi]
cmp dword [ecx + 0x10], ebp
jge 0x4729b2
jmp 0x4729a0
mov edx, dword [edi]
push edx
call fcn.0046f9a0
mov eax, dword [edi]
add esp, 4
cmp dword [eax + 0x10], ebp
jl 0x4729a0
lea ecx, [esp + 0x1c]
push ecx
push ebp
mov ecx, edi
call fcn.00471be0
test byte [esp + 0x228], 0x10
movzx eax, word [esi]
je 0x472a0c
cmp ax, 0x2f
je 0x4729e4
cmp ax, 0x5c
je 0x4729e4
cmp ax, bx
je 0x4729f5
cmp word [esi + 2], 0x3a
jne 0x4729f5
push esi
push ebx
call fcn.00472240
add esp, 8
xor eax, eax
jmp 0x472bfd
push esi
add edi, 0x244
push edi
call fcn.00472240
add esp, 8
xor eax, eax
jmp 0x472bfd
cmp ax, bx
mov ebp, esi
mov ecx, esi
je 0x472a33
movzx eax, ax
cmp ax, 0x2f
je 0x472a24
cmp ax, 0x5c
jne 0x472a27
lea ebp, [ecx + 2]
movzx eax, word [ecx + 2]
add ecx, 2
cmp ax, bx
jne 0x472a18
lea edx, [esp + 0x24c]
push esi
push edx
call fcn.0046ff60
add esp, 8
cmp ebp, esi
jne 0x472ab5
mov word [esp + 0x24c], bx
push ebp
lea ecx, [esp + 0x250]
push ecx
lea esi, [edi + 0x244]
push esi
lea edx, [esp + 0x460]
push str._s_s_s
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [esp + 0x260]
push eax
push esi
call fcn.00472240
add esp, 0x1c
mov ecx, dword [esp + 0x228]
push ebx
push ecx
push 2
push ebx
push ebx
push 0x40000000
lea edx, [esp + 0x46c]
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov ebp, eax
cmp ebp, 0xffffffff
jne 0x472b21
mov eax, 0x200
jmp 0x472bfd
mov eax, ebp
sub eax, esi
sar eax, 1
mov word [esp + eax*2 + 0x24c], bx
mov ax, word [esp + 0x24c]
cmp ax, 0x2f
je 0x472aef
cmp ax, 0x5c
je 0x472aef
cmp ax, bx
je 0x472a50
cmp word [esp + 0x24e], 0x3a
jne 0x472a50
push ebp
lea ecx, [esp + 0x250]
push ecx
lea edx, [esp + 0x45c]
push str._s_s
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [esp + 0x25c]
push eax
push ebx
call fcn.00472240
add esp, 0x18
jmp 0x472a84
mov eax, dword [edi + 0x23c]
mov ecx, dword [edi]
push eax
push ecx
call fcn.00471680
add esp, 8
cmp dword [edi + 0x240], ebx
jne 0x472b4e
push 0x4000
call fcn.004d377b
add esp, 4
mov dword [edi + 0x240], eax
mov dword [esp + 0x14], ebx
mov ebx, dword [sym.imp.KERNEL32.dll_WriteFile]
jmp 0x472b60
mov eax, dword [edi + 0x240]
mov ecx, dword [edi]
lea edx, [esp + 0x13]
push edx
push 0x4000
push eax
push ecx
call fcn.00471810
mov esi, eax
add esp, 0x10
cmp esi, 0xffffff96
je 0x472bb4
test esi, esi
jl 0x472baa
jle 0x472b9f
mov eax, dword [edi + 0x240]
push 0
lea edx, [esp + 0x1c]
push edx
push esi
push eax
push ebp
call ebx
test eax, eax
je 0x472bbe
cmp byte [esp + 0x13], 0
jne 0x472bc8
test esi, esi
jne 0x472b60
mov dword [esp + 0x14], 0x5000000
jmp 0x472be7
mov dword [esp + 0x14], 0x1000
jmp 0x472be7
mov dword [esp + 0x14], 0x400
jmp 0x472be7
lea ecx, [esp + 0x23c]
push ecx
lea edx, [esp + 0x230]
push edx
lea eax, [esp + 0x23c]
push eax
push ebp
call dword [sym.imp.KERNEL32.dll_SetFileTime]
push ebp
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov ecx, dword [edi]
push ecx
call fcn.0046fd40
mov eax, dword [esp + 0x18]
add esp, 4
pop edi
pop ebp
mov ecx, dword [esp + 0x654]
pop esi
pop ebx
xor ecx, esp
mov dword [0x56c67c], eax
call fcn.004f2ac1
add esp, 0x650
ret