Function at 0x403b00
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x2ff0
call fcn.0040bb60
mov eax, dword [0x439050]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0xc]
xorps xmm0, xmm0
push ebx
push esi
push edi
mov edi, ecx
mov dword [ebp - 0x2fd0], eax
xor eax, eax
movlpd qword [ebp - 0x2fe4], xmm0
mov dword [ebp - 0x2fb8], eax
mov dword [ebp - 0x2fa0], eax
movlpd qword [ebp - 0x2fdc], xmm0
mov dword [ebp - 0x2fc0], eax
test edi, edi
je 0x40431a
mov ecx, dword [edi + 0x48]
test ecx, ecx
je 0x404313
cmp dword [edi + 0x38], eax
je 0x404313
cmp edx, dword [edi + 0x10]
jae 0x403b77
mov eax, dword [ecx + 0x10]
mov eax, dword [eax + edx*4]
add eax, dword [ecx]
jmp 0x403b79
xor eax, eax
push ecx
lea ecx, [ebp - 0x48c]
push ecx
push eax
mov ecx, edi
call fcn.00403730
add esp, 0xc
test eax, eax
je 0x40431a
cmp dword [ebp - 0x440], 0
jne 0x4042fd
mov ebx, dword [ebp - 0x464]
mov eax, ebx
or eax, dword [ebp - 0x460]
mov dword [ebp - 0x2f88], ebx
je 0x4042fd
test byte [ebp - 0x478], 0x61
je 0x403bde
mov dword [edi + 0x1c], 5
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret
mov ax, word [ebp - 0x476]
test ax, ax
je 0x403c0a
cmp ax, 8
je 0x403c0a
mov dword [edi + 0x1c], 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret
mov esi, dword [edi + 0x38]
lea eax, [ebp - 0x28]
push 0x1e
push eax
push dword [ebp - 0x448]
mov ecx, esi
push dword [ebp - 0x44c]
push dword [edi + 0x44]
call dword [0x429180]
call esi
add esp, 0x14
cmp eax, 0x1e
je 0x403c4e
mov dword [edi + 0x1c], 0x14
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret
cmp dword [ebp - 0x28], 0x4034b50
jne 0x4042e3
movzx eax, word [ebp - 0xe]
cdq
mov esi, eax
mov ecx, edx
movzx eax, word [ebp - 0xc]
cdq
add esi, eax
adc ecx, edx
add esi, dword [ebp - 0x44c]
adc ecx, dword [ebp - 0x448]
add esi, 0x1e
mov edx, esi
mov dword [ebp - 0x2f98], esi
adc ecx, 0
add edx, ebx
mov eax, ecx
mov dword [ebp - 0x2f9c], ecx
mov ecx, dword [ebp - 0x460]
adc eax, ecx
cmp eax, dword [edi + 4]
ja 0x4042e3
jb 0x403cac
cmp edx, dword [edi]
ja 0x4042e3
mov eax, dword [edi + 0x48]
mov eax, dword [eax + 0x48]
test eax, eax
je 0x403d1a
add eax, esi
mov dword [ebp - 0x2fc8], ebx
mov esi, dword [ebp - 0x460]
mov edx, ecx
xorps xmm0, xmm0
mov dword [ebp - 0x2f8c], eax
mov eax, ebx
movlpd qword [ebp - 0x2fb4], xmm0
mov ebx, dword [ebp - 0x2fb0]
mov ecx, dword [ebp - 0x2fb4]
mov dword [ebp - 0x2f94], eax
mov dword [ebp - 0x2fbc], edx
mov dword [ebp - 0x2fa8], eax
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2fa4], eax
mov dword [ebp - 0x2f90], edx
mov dword [ebp - 0x2f80], eax
mov dword [ebp - 0x2c], ebx
mov dword [ebp - 0x2fb0], ecx
jmp 0x403dc6
test ecx, ecx
ja 0x403d2c
jb 0x403d28
cmp ebx, 0x10000
jae 0x403d2c
mov eax, ebx
jmp 0x403d33
mov eax, 0x10000
xor ecx, ecx
mov esi, dword [edi + 0x28]
push eax
push 1
push dword [edi + 0x34]
mov dword [ebp - 0x2fbc], ecx
mov ecx, esi
mov dword [ebp - 0x2f94], eax
call dword [0x429180]
call esi
add esp, 0xc
mov dword [ebp - 0x2f8c], eax
test eax, eax
jne 0x403d77
mov dword [edi + 0x1c], 0x10
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x460]
mov ecx, ebx
mov dword [ebp - 0x2fb0], ebx
mov edx, ecx
mov ebx, esi
mov dword [ebp - 0x2fa8], edx
mov eax, ebx
mov dword [ebp - 0x2fa4], edx
xorps xmm0, xmm0
mov dword [ebp - 0x30], eax
movlpd qword [ebp - 0x2fcc], xmm0
mov dword [ebp - 0x2f90], eax
mov eax, dword [ebp - 0x2fcc]
mov dword [ebp - 0x2f80], edx
mov edx, dword [ebp - 0x2fc8]
mov dword [ebp - 0x2c], esi
mov dword [ebp - 0x2fc8], eax
cmp word [ebp - 0x476], 0
mov dword [ebp - 0x2f84], edx
je 0x40409e
mov esi, dword [edi + 0x28]
mov ecx, esi
push 0x8000
push 1
push dword [edi + 0x34]
mov dword [ebp - 0x2f7c], 0
call dword [0x429180]
call esi
add esp, 0xc
mov dword [ebp - 0x2fc0], eax
test eax, eax
jne 0x403e17
mov dword [edi + 0x1c], 0x10
or ebx, 0xffffffff
jmp 0x40428b
mov eax, dword [ebp - 0x2fe4]
mov esi, dword [ebp - 0x2fd8]
mov ecx, dword [ebp - 0x2fe0]
mov edx, dword [ebp - 0x2f84]
mov dword [ebp - 0x2f90], eax
mov eax, dword [ebp - 0x2fdc]
mov dword [ebp - 0x2f80], esi
mov esi, dword [ebp - 0x2fc8]
mov dword [ebp - 0x2fa4], ecx
mov dword [ebp - 0x2f88], eax
nop dword [eax]
nop word [eax + eax]
mov ecx, eax
mov eax, dword [ebp - 0x2fc0]
and ecx, 0x7fff
add eax, ecx
mov dword [ebp - 0x2fa8], eax
mov eax, 0x8000
sub eax, ecx
mov dword [ebp - 0x2c], eax
mov eax, esi
or eax, edx
jne 0x403f56
mov eax, dword [edi + 0x48]
cmp dword [eax + 0x48], 0
jne 0x403f56
mov ecx, dword [ebp - 0x2fbc]
cmp ecx, ebx
ja 0x403ebf
jb 0x403eb1
mov eax, dword [ebp - 0x2fb0]
cmp dword [ebp - 0x2f94], eax
jae 0x403ec5
mov eax, dword [ebp - 0x2f94]
mov dword [ebp - 0x2f84], ecx
jmp 0x403ecb
mov eax, dword [ebp - 0x2fb0]
mov dword [ebp - 0x2f84], ebx
mov esi, dword [edi + 0x38]
mov ecx, esi
push eax
push dword [ebp - 0x2f8c]
mov dword [ebp - 0x2fc8], eax
push dword [ebp - 0x2f9c]
push dword [ebp - 0x2f98]
push dword [edi + 0x44]
call dword [0x429180]
call esi
mov esi, dword [ebp - 0x2fc8]
add esp, 0x14
xor ecx, ecx
cmp eax, esi
jne 0x404080
mov edx, dword [ebp - 0x2f84]
cmp ecx, edx
jne 0x404080
add dword [ebp - 0x2f98], esi
xorps xmm0, xmm0
mov eax, dword [ebp - 0x2fb0]
adc dword [ebp - 0x2f9c], edx
sub eax, esi
movlpd qword [ebp - 0x2fe4], xmm0
mov ecx, dword [ebp - 0x2fe0]
sbb ebx, edx
mov dword [ebp - 0x2fa4], ecx
mov ecx, dword [ebp - 0x2fe4]
mov dword [ebp - 0x2fb0], eax
mov dword [ebp - 0x2f90], ecx
jmp 0x403f62
mov ecx, dword [ebp - 0x2f90]
mov eax, dword [ebp - 0x2fb0]
or eax, ebx
mov dword [ebp - 0x30], esi
je 0x403f70
mov eax, 2
jmp 0x403f72
xor eax, eax
mov edx, dword [ebp - 0x2f8c]
push eax
lea eax, [ebp - 0x2c]
push eax
push dword [ebp - 0x2fa8]
lea eax, [ebp - 0x30]
push dword [ebp - 0x2fc0]
lea edx, [ecx + edx]
push eax
lea ecx, [ebp - 0x2f7c]
call fcn.00401160
mov ecx, dword [ebp - 0x30]
add esp, 0x14
mov edx, dword [ebp - 0x2f84]
sub esi, ecx
mov dword [ebp - 0x2fb8], eax
mov eax, dword [ebp - 0x2c]
sbb edx, 0
add dword [ebp - 0x2f90], ecx
mov dword [ebp - 0x2f84], edx
adc dword [ebp - 0x2fa4], 0
test eax, eax
je 0x404049
push dword [ebp - 0x2fd0]
push eax
push 1
push dword [ebp - 0x2fa8]
call fcn.004103a4
mov ecx, dword [ebp - 0x2c]
add esp, 0x10
cmp eax, ecx
jne 0x40408f
mov edx, dword [ebp - 0x2fa8]
push ecx
mov ecx, dword [ebp - 0x2fa0]
call fcn.00401070
mov ecx, dword [ebp - 0x2f80]
add esp, 4
mov dword [ebp - 0x2fa0], eax
mov eax, dword [ebp - 0x2f88]
add eax, dword [ebp - 0x2c]
mov dword [ebp - 0x2f88], eax
adc ecx, 0
mov dword [ebp - 0x2f80], ecx
cmp ecx, dword [ebp - 0x458]
ja 0x40426d
jb 0x404041
cmp eax, dword [ebp - 0x45c]
ja 0x40426d
mov edx, dword [ebp - 0x2f84]
jmp 0x40404f
mov eax, dword [ebp - 0x2f88]
mov ecx, dword [ebp - 0x2fb8]
cmp ecx, 1
je 0x403e60
cmp ecx, 2
je 0x403e60
mov esi, dword [ebp - 0x2f80]
test ecx, ecx
jne 0x404285
mov edx, dword [ebp - 0x2f88]
jmp 0x40424f
mov dword [edi + 0x1c], 0x14
or ebx, 0xffffffff
jmp 0x40428b
mov dword [edi + 0x1c], 0x1f
or ebx, 0xffffffff
jmp 0x40428b
mov eax, dword [edi + 0x48]
cmp dword [eax + 0x48], 0
je 0x404136
cmp dword [ebp - 0x30], 0
ja 0x40411c
cmp dword [ebp - 0x2fa8], 0xffffffff
ja 0x40411c
push dword [ebp - 0x2fd0]
mov eax, dword [ebp - 0x464]
mov ebx, dword [ebp - 0x2f8c]
push eax
push 1
push ebx
call fcn.004103a4
add esp, 0x10
xor ecx, ecx
cmp eax, dword [ebp - 0x2fa4]
jne 0x404107
cmp ecx, dword [ebp - 0x2f90]
jne 0x404107
push dword [ebp - 0x2f80]
mov edx, ebx
call fcn.00401070
add esp, 4
mov dword [ebp - 0x2fa0], eax
xor ecx, ecx
jmp 0x40406d
or ecx, 0xffffffff
mov dword [edi + 0x1c], 0x1f
mov dword [ebp - 0x2fb8], ecx
jmp 0x40406d
mov dword [edi + 0x1c], 0x1b
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret
mov esi, dword [ebp - 0x2fd8]
mov eax, ecx
or eax, ebx
je 0x404249
mov eax, dword [ebp - 0x2fdc]
mov dword [ebp - 0x2f80], esi
mov dword [ebp - 0x2f88], eax
nop dword [eax + eax]
mov edx, dword [ebp - 0x2fbc]
cmp edx, ebx
ja 0x40417d
mov eax, dword [ebp - 0x2f94]
jb 0x404176
cmp eax, ecx
jae 0x40417d
mov ebx, eax
mov dword [ebp - 0x30], edx
jmp 0x404185
mov eax, dword [ebp - 0x2c]
mov ebx, ecx
mov dword [ebp - 0x30], eax
mov esi, dword [edi + 0x38]
mov ecx, esi
push ebx
push dword [ebp - 0x2f8c]
push dword [ebp - 0x2f9c]
push dword [ebp - 0x2f98]
push dword [edi + 0x44]
call dword [0x429180]
call esi
add esp, 0x14
xor ecx, ecx
cmp eax, ebx
jne 0x404080
mov esi, dword [ebp - 0x30]
cmp ecx, esi
jne 0x404080
mov edx, dword [ebp - 0x2f8c]
mov ecx, dword [ebp - 0x2fa0]
push ebx
call fcn.00401070
push dword [ebp - 0x2fd0]
mov dword [ebp - 0x2fa0], eax
push ebx
push 1
push dword [ebp - 0x2f8c]
call fcn.004103a4
add esp, 0x14
xor ecx, ecx
cmp eax, ebx
jne 0x40408f
cmp ecx, esi
jne 0x40408f
add dword [ebp - 0x2f98], ebx
mov edx, dword [ebp - 0x2f88]
adc dword [ebp - 0x2f9c], esi
add edx, ebx
mov ecx, dword [ebp - 0x2fb0]
adc dword [ebp - 0x2f80], esi
sub ecx, ebx
mov ebx, dword [ebp - 0x2c]
mov eax, ecx
sbb ebx, esi
mov dword [ebp - 0x2f88], edx
or eax, ebx
mov dword [ebp - 0x2fb0], ecx
mov dword [ebp - 0x2c], ebx
jne 0x404160
mov esi, dword [ebp - 0x2f80]
jmp 0x40424f
mov edx, dword [ebp - 0x2fdc]
cmp edx, dword [ebp - 0x45c]
jne 0x404279
cmp esi, dword [ebp - 0x458]
jne 0x404279
mov eax, dword [ebp - 0x2fa0]
cmp eax, dword [ebp - 0x46c]
je 0x404285
mov dword [edi + 0x1c], 0xb
or ebx, 0xffffffff
jmp 0x40428b
mov dword [edi + 0x1c], 0xd
or ebx, 0xffffffff
jmp 0x40428b
mov ebx, dword [ebp - 0x2fb8]
mov eax, dword [edi + 0x48]
cmp dword [eax + 0x48], 0
jne 0x4042ad
push dword [ebp - 0x2f8c]
mov esi, dword [edi + 0x2c]
mov ecx, esi
push dword [edi + 0x34]
call dword [0x429180]
call esi
add esp, 8
mov eax, dword [ebp - 0x2fc0]
test eax, eax
je 0x4042cb
mov esi, dword [edi + 0x2c]
mov ecx, esi
push eax
push dword [edi + 0x34]
call dword [0x429180]
call esi
add esp, 8
xor eax, eax
test ebx, ebx
sete al
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret
mov dword [edi + 0x1c], 9
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret
mov eax, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret
mov dword [edi + 0x1c], 0x18
mov ecx, dword [ebp - 8]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040ad3a
mov esp, ebp
pop ebp
ret