Function at 0x401520
Capabilities:
Write file on windows

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0xcc
mov ebp, dword [esp + 0xe8]
mov esi, dword [esp + 0xe4]
mov dword [esp + 0x80], 0
mov edi, dword [esp + 0xfc]
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov eax, ebp
mov dword [esp + 0x8c], 0
or eax, esi
je 0x401643
mov eax, 0x7fffffff
cmp eax, esi
mov eax, 0
sbb eax, ebp
jb 0x401595
mov dword [esp], esi
call fcn.00429020
test eax, eax
jne 0x40164a
mov dword [esp], 2
mov edi, dword [fcn.004a1b90]
call edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebp
mov dword [esp + 4], str.Error:_Unsupported_code_page__I64u.
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp], 0xa
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
mov eax, dword [esp + 0x88]
test eax, eax
je 0x401d85
mov ebx, 0x16
xor ecx, ecx
lea ebp, [esp + 0x88]
mov dword [esp], ebp
mov dword [esp + 0x78], ecx
call fcn.004152d0
mov ecx, dword [esp + 0x78]
mov esi, eax
mov eax, edx
or eax, esi
jne 0x401882
mov eax, dword [esp + 0x80]
test eax, eax
je 0x401634
lea edx, [esp + 0x80]
mov dword [esp], eax
mov dword [esp + 4], edx
mov dword [esp + 0x78], ecx
call fcn.0041d440
mov ecx, dword [esp + 0x78]
add esp, 0xcc
mov eax, ebx
mov edx, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
mov esi, 0x1b5
xor ebp, ebp
test edi, edi
jne 0x401900
mov edx, dword [esp + 0xec]
test edx, edx
jne 0x401cf3
mov dword [esp + 0x78], 0
mov edi, dword [esp + 0xec]
mov eax, dword [esp + 0xe0]
lea ebp, [esp + 0x88]
mov dword [esp + 4], 0
mov dword [esp + 8], ebp
mov dword [esp], eax
call fcn.004152a0
mov ebx, eax
mov eax, edx
or eax, ebx
jne 0x401c60
mov eax, dword [esp + 0xf0]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x88]
mov dword [esp], eax
call fcn.004153f0
mov ebx, eax
mov eax, edx
or eax, ebx
jne 0x401dd0
mov ecx, dword [esp + 0x104]
xor edx, edx
mov ebx, dword [esp + 0x78]
mov dword [esp + 0x60], 0
mov dword [esp + 0x58], 1
test ecx, ecx
lea ecx, [esp + 0x9d]
mov dword [esp + 0x4c], ebx
mov ebx, dword [esp + 0xf4]
setne dl
test edi, edi
mov edi, dword [esp + 0xf0]
mov dword [esp + 0x44], esi
cmovne eax, ecx
mov ecx, dword [esp + 0x110]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x54], 0
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xf8]
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x108]
mov dword [esp + 0x18], eax
xor eax, eax
test ebx, ebx
setne al
mov dword [esp + 0x64], ecx
mov dword [esp + 0xc], eax
xor eax, eax
test edi, edi
setne al
mov dword [esp + 0x50], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x2c], 0
mov dword [esp + 0x28], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 8], 0
mov dword [esp + 4], eax
mov eax, dword [esp + 0x88]
mov dword [esp], eax
call fcn.0045ced0
mov ebx, eax
mov eax, edx
or eax, ebx
je 0x401b34
mov esi, dword [esp + 0xec]
test esi, esi
je 0x401d91
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [esp + 0x78], edx
call fcn.0041d490
mov dword [esp], 2
mov edi, dword [fcn.004a1b90]
mov esi, eax
call edi
mov dword [esp + 8], esi
mov dword [esp + 4], 0x4a31cd
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp], 0xa
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x78]
test eax, eax
je 0x40160e
mov dword [esp], eax
mov dword [esp + 0x78], ecx
call fcn.004155c0
mov ecx, dword [esp + 0x78]
mov esi, eax
mov eax, edx
or eax, esi
jne 0x401fd0
mov dword [esp], ebp
mov dword [esp + 0x78], ecx
call fcn.004152d0
mov ecx, dword [esp + 0x78]
mov esi, eax
mov eax, edx
or eax, esi
je 0x40160e
mov dword [esp + 4], edx
mov dword [esp], esi
mov dword [esp + 0x78], ecx
call fcn.0041d490
mov dword [esp], 2
mov ebp, eax
call edi
mov dword [esp + 0x10], ebp
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0x4a316b
mov dword [esp + 4], 0x4a3248
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a319f
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call edi
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov ecx, dword [esp + 0x78]
jmp 0x40160e
mov eax, dword [esp + 0x100]
lea edi, [esp + 0x80]
mov dword [esp], eax
call sub.msvcrt.dll_strlen
lea edx, [esp + 0x84]
mov dword [esp + 8], edi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x100]
mov dword [esp + 0xc], edx
mov dword [esp], eax
call fcn.00428150
mov ebx, eax
mov eax, edx
or eax, ebx
jne 0x401e50
mov edx, dword [esp + 0x84]
cmp edx, 0xb
ja 0x401e10
lea eax, [esp + 0x9d]
lea ebx, [esp + 0xa8]
mov dword [esp + 8], edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x18], ebx
mov dword [esp + 0x14], 0xb
mov dword [esp + 0xc], 0
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 0xa8], 0
call fcn.004290c0
test eax, eax
je 0x402151
mov eax, dword [esp + 0xa8]
mov dword [esp], esi
mov dword [esp + 0x78], eax
mov dword [esp + 8], eax
lea eax, [esp + 0x9d]
mov dword [esp + 4], eax
call fcn.00468520
test eax, eax
je 0x402180
mov eax, dword [esp + 0x80]
test eax, eax
je 0x4019f0
mov dword [esp + 4], edi
mov dword [esp], eax
call fcn.0041d440
mov dword [esp + 0x84], 0
mov eax, dword [esp + 0xec]
test eax, eax
je 0x4021b4
mov edi, dword [fcn.004a1b90]
mov dword [esp], 2
call edi
mov edx, dword [esp + 0xe0]
mov dword [esp + 4], 0x4a32da
mov dword [esp], eax
mov dword [esp + 8], edx
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp], 0xa
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
lea eax, [esp + 0x90]
mov dword [esp + 0x10], ebx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0xc], 0
mov dword [esp + 8], eax
lea eax, [esp + 0x9d]
mov dword [esp + 4], eax
mov dword [esp], esi
mov dword [esp + 0x90], 0
mov dword [esp + 0x94], 0
call fcn.00429040
test eax, eax
je 0x402103
lea eax, [esp + 0x98]
lea ebp, [esp + 0x94]
mov dword [esp], ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 8], ebp
mov dword [esp + 4], eax
call fcn.00428940
mov ebx, eax
mov eax, edx
or eax, ebx
jne 0x401f60
mov edx, dword [esp + 0x94]
mov ebx, dword [esp + 0x98]
mov dword [esp], 2
mov dword [esp + 0x7c], edx
call edi
mov edx, dword [esp + 0x7c]
mov dword [esp + 8], ebx
mov dword [esp + 4], 0x4a3156
mov dword [esp + 0xc], edx
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp], 0xa
mov edi, 1
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
mov eax, dword [esp + 0x94]
mov dword [esp + 4], ebp
mov dword [esp], eax
call fcn.0041d440
jmp 0x401670
shl esi, 4
mov eax, dword [esp + 0x88]
lea edi, [esp + 0x8c]
and esi, 0x3ff0
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], eax
call fcn.0046b4a0
mov ebx, eax
mov eax, edx
mov ecx, edx
or eax, ebx
jne 0x402070
mov eax, dword [esp + 0x8c]
mov edx, dword [eax + 0x20]
cmp edx, 2
je 0x402054
cmp edx, 1
mov esi, 0x4a323f
mov edx, 0x4a3242
cmove edx, esi
mov esi, dword [esp + 0x10c]
mov dword [esi], edx
mov dword [esp], eax
mov dword [esp + 0x78], ecx
call fcn.0046a670
mov dword [esp], edi
call fcn.0046ad00
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x78]
test eax, eax
je 0x40160e
mov dword [esp], eax
call fcn.004155c0
mov ebx, eax
mov eax, edx
mov ecx, edx
or eax, ebx
je 0x401ec0
mov dword [esp + 4], ecx
mov dword [esp], ebx
mov dword [esp + 0x78], ecx
call fcn.0041d490
mov edi, dword [fcn.004a1b90]
mov dword [esp], 2
mov esi, eax
call edi
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0x4a316b
mov dword [esp + 4], 0x4a3294
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a319f
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call edi
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov ecx, dword [esp + 0x78]
jmp 0x4015f2
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [esp + 0x78], edx
call fcn.0041d490
mov dword [esp], 2
mov edi, dword [fcn.004a1b90]
mov esi, eax
call edi
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0x4a316b
mov dword [esp + 4], 0x4a3174
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a319f
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call edi
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x78]
test eax, eax
jne 0x4015f2
jmp 0x40160e
mov ebx, dword [fcn.004a1b90]
mov dword [esp], 2
call ebx
mov edx, dword [esp + 0xe0]
mov dword [esp + 4], 0x4a32da
mov dword [esp], eax
mov dword [esp + 8], edx
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call ebx
mov dword [esp], 0xa
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
mov dword [esp], 2
call ebx
mov dword [esp + 8], 0x14
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a32e7
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call ebx
mov dword [esp], 0xa
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
mov dword [esp + 0x78], 0
jmp 0x401670
mov ebx, 0x16
xor ecx, ecx
jmp 0x40160e
mov dword [esp + 0x78], edx
mov edi, dword [fcn.004a1b90]
mov dword [esp], 2
call edi
mov dword [esp + 8], 0x12
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a31e3
call sub.msvcrt.dll_fwrite
jmp 0x40181e
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [esp + 0x78], edx
call fcn.0041d490
mov dword [esp], 2
mov edi, dword [fcn.004a1b90]
mov esi, eax
call edi
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0x4a316b
mov dword [esp + 4], 0x4a31a4
jmp 0x401c99
mov dword [esp + 0x78], edx
mov edi, dword [fcn.004a1b90]
mov dword [esp], 2
call edi
mov edx, dword [esp + 0x78]
mov dword [esp + 0xc], 0xb
mov dword [esp + 4], 0x4a3058
mov dword [esp + 8], edx
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
jmp 0x4015bc
mov dword [esp + 0x78], edx
mov edi, dword [fcn.004a1b90]
lea ebp, [esp + 0x88]
mov dword [esp], 2
call edi
mov dword [esp + 8], 0x31
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a3024
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call edi
mov dword [esp], 0xa
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x78]
test eax, eax
jne 0x4015f2
jmp 0x40160e
mov dword [esp], ebp
call fcn.004152d0
mov ebx, eax
mov eax, edx
mov ecx, edx
or eax, ebx
je 0x40160e
mov dword [esp + 4], ecx
mov dword [esp], ebx
mov dword [esp + 0x78], ecx
call fcn.0041d490
mov esi, dword [fcn.004a1b90]
mov dword [esp], 2
mov edi, eax
call esi
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0x4a316b
mov dword [esp + 4], 0x4a3248
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call esi
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a319f
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call esi
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov ecx, dword [esp + 0x78]
jmp 0x40160e
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [esp + 0x78], edx
call fcn.0041d490
mov dword [esp], 2
mov esi, eax
call edi
mov dword [esp + 8], esi
mov dword [esp + 4], 0x4a3130
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp], 0xa
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
mov ecx, dword [esp + 0x78]
mov eax, dword [esp + 0x88]
lea ebp, [esp + 0x88]
test eax, eax
jne 0x4015f2
jmp 0x40160e
mov dword [esp + 4], edx
mov dword [esp], esi
mov dword [esp + 0x7c], ecx
call fcn.0041d490
mov dword [esp], 2
mov dword [esp + 0x78], eax
call edi
mov edx, dword [esp + 0x78]
mov dword [esp + 0xc], esi
mov dword [esp + 8], 0x4a316b
mov dword [esp + 0x10], edx
mov dword [esp + 4], 0x4a3294
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a319f
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call edi
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov ecx, dword [esp + 0x7c]
jmp 0x4015f2
mov esi, dword [esp + 0x10c]
mov dword [esi], 0x4a323c
jmp 0x401b95
mov dword [esp + 4], edx
mov dword [esp], ebx
mov dword [esp + 0x78], edx
call fcn.0041d490
mov edi, dword [fcn.004a1b90]
mov dword [esp], 2
mov esi, eax
call edi
mov dword [esp + 0x10], esi
mov dword [esp + 0xc], ebx
mov dword [esp + 8], 0x4a316b
mov dword [esp + 4], str.__s__Generated_invalid_volume._fat_volume_create_returned:__lu___s_
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
mov dword [esp], 2
call edi
mov dword [esp + 8], 2
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a319f
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call edi
mov dword [esp], eax
call sub.msvcrt.dll_fflush
mov eax, dword [esp + 0x88]
mov ecx, dword [esp + 0x78]
test eax, eax
jne 0x40184a
jmp 0x40160e
mov dword [esp], 2
mov ebx, 0x2a
call edi
mov dword [esp + 8], 0x2e
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], str.Error_while_converting_volume_label_to_UTF_16.
call sub.msvcrt.dll_fwrite
mov dword [esp], 2
call edi
mov dword [esp], 0xa
mov dword [esp + 4], eax
call sub.msvcrt.dll_fputc
xor ecx, ecx
jmp 0x401fac
mov dword [esp], 2
mov edi, dword [fcn.004a1b90]
call edi
mov dword [esp + 8], esi
mov dword [esp + 0xc], ebp
mov dword [esp + 4], str.Error:_Non_CP_I64u_characters_in_volume_label.
mov dword [esp], eax
call sub.msvcrt.dll_fprintf
jmp 0x4015bc
mov dword [esp], 2
mov edi, dword [fcn.004a1b90]
call edi
mov dword [esp + 8], 0x2a
mov dword [esp + 0xc], eax
mov dword [esp + 4], 1
mov dword [esp], 0x4a30d4
call sub.msvcrt.dll_fwrite
jmp 0x4015bc
mov edi, 1
jmp 0x401670