Function at 0x43f5c0
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x30
mov eax, dword [0x5ce16c]
mov esi, ecx
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [ecx + 0x1c]
cmp dword [eax], 0
je 0x43f36b
mov eax, dword [esi + 0x2c]
mov ecx, dword [eax]
test ecx, ecx
jle 0x43f36b
dec ecx
mov dword [eax], ecx
mov eax, dword [esi + 0x1c]
mov ecx, dword [eax]
lea edx, [ecx + 1]
mov dword [eax], edx
movzx esi, byte [ecx]
jmp 0x43f5a7
cmp dword [esi + 0x4c], 0
je 0x43f4ab
mov eax, dword [esi + 0xc]
lea ecx, [esi + 0x3c]
cmp dword [eax], ecx
je 0x43f4b5
cmp dword [esi + 0x38], 0
je 0x43f4d3
mov dword [ebp - 0x14], 0xf
mov dword [ebp - 0x18], 0
mov byte [ebp - 0x28], 0
push dword [esi + 0x4c]
call fcn.004ed231
add esp, 4
cmp eax, 0xffffffff
je 0x43f50a
lea ecx, [esi + 0x40]
lea edi, [ebp - 0x28]
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x3c], ecx
nop
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
cmp ecx, edx
jae 0x43f3f0
lea ebx, [ecx + 1]
cmp edx, 0xf
mov edx, edi
mov dword [ebp - 0x18], ebx
jbe 0x43f3da
mov edx, dword [ebp - 0x28]
mov byte [edx + ecx], al
mov byte [edx + ecx + 1], 0
jmp 0x43f410
sub esp, 0xc
movzx ecx, byte [ebp - 0x34]
movsx eax, al
mov byte [esp + 4], cl
mov ecx, edi
mov dword [esp + 8], eax
mov dword [esp], 1
call fcn.0040f6e0
mov ecx, dword [esi + 0x38]
cmp dword [ebp - 0x14], 0xf
mov eax, edi
jbe 0x43f41e
mov eax, dword [ebp - 0x28]
mov edx, dword [ebp - 0x18]
mov ebx, dword [ecx]
lea edi, [ebp - 0x34]
add edx, eax
push edi
lea edi, [ebp - 0x2c]
push edi
lea edi, [ebp - 0x2d]
push edi
lea esi, [ebp - 0x2c]
push esi
push edx
push eax
push dword [ebp - 0x3c]
call dword [ebx + 0x18]
cmp eax, 2
jae 0x43f4fa
cmp dword [ebp - 0x34], edi
jne 0x43f511
mov eax, dword [ebp - 0x2c]
cmp dword [ebp - 0x14], 0xf
jbe 0x43f470
mov edx, dword [ebp - 0x28]
mov ecx, dword [ebp - 0x18]
lea edi, [ebp - 0x28]
sub eax, edx
jmp 0x43f47a
mov ecx, dword [ebp - 0x18]
lea edi, [ebp - 0x28]
sub eax, edi
mov edx, edi
cmp ecx, eax
cmovb eax, ecx
sub ecx, eax
add eax, edx
mov dword [ebp - 0x18], ecx
inc ecx
push ecx
push eax
push edx
call fcn.004e1050
add esp, 0xc
mov esi, dword [ebp - 0x38]
push dword [esi + 0x4c]
call fcn.004ed231
add esp, 4
cmp eax, 0xffffffff
jne 0x43f3c0
jmp 0x43f50a
mov esi, 0xffffffff
jmp 0x43f5a7
mov ecx, dword [esi + 0x50]
mov edx, dword [esi + 0x54]
mov dword [eax], ecx
sub edx, ecx
mov eax, dword [esi + 0x1c]
mov dword [eax], ecx
mov eax, dword [esi + 0x2c]
mov dword [eax], edx
cmp dword [esi + 0x38], 0
jne 0x43f38d
push dword [esi + 0x4c]
call fcn.004ed231
add esp, 4
mov ecx, dword [ebp - 0x10]
mov ebx, eax
cmp eax, 0xffffffff
movzx eax, bl
cmovne ebx, eax
xor ecx, ebp
call fcn.004dd9ae
mov eax, ebx
jmp 0x43f5b3
cmp eax, 3
jne 0x43f50a
cmp dword [ebp - 0x14], 0xf
jbe 0x43f56d
mov eax, dword [ebp - 0x28]
jmp 0x43f570
mov esi, 0xffffffff
jmp 0x43f573
cmp dword [ebp - 0x14], 0xf
jbe 0x43f51c
mov edi, dword [ebp - 0x28]
jmp 0x43f51f
lea edi, [ebp - 0x28]
add edi, dword [ebp - 0x18]
mov eax, dword [ebp - 0x2c]
mov esi, dword [ebp - 0x38]
sub edi, eax
test edi, edi
jle 0x43f567
movsx eax, byte [eax + edi - 1]
dec edi
push dword [esi + 0x4c]
push eax
call fcn.004ed18c
add esp, 8
test edi, edi
jle 0x43f567
nop word cs:[eax + eax]
nop
mov eax, dword [ebp - 0x2c]
movsx eax, byte [eax + edi - 1]
push dword [esi + 0x4c]
push eax
call fcn.004ed18c
add esp, 8
dec edi
jg 0x43f550
movzx esi, byte [ebp - 0x2d]
jmp 0x43f573
lea eax, [ebp - 0x28]
movsx esi, byte [eax]
mov eax, dword [ebp - 0x14]
cmp eax, 0x10
jb 0x43f5a7
mov ecx, dword [ebp - 0x28]
lea edi, [eax + 1]
cmp edi, 0x1000
jb 0x43f59d
mov edx, dword [ecx - 4]
add ecx, 0xfffffffc
sub ecx, edx
cmp ecx, 0x20
jae 0x43f5bb
add eax, 0x24
mov ecx, edx
mov edi, eax
push edi
push ecx
call fcn.004dd465
add esp, 8
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004dd9ae
mov eax, esi
add esp, 0x30
pop esi
pop edi
pop ebx
pop ebp
ret
call fcn.004e44e8
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x38
mov eax, dword [0x5ce16c]
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 0x10]
mov ebx, dword [ebp + 0xc]
mov edi, ecx
lea ecx, [ecx + 0x3c]
xor eax, ebp
cmp dword [ebp + 0x14], 1
mov dword [esp + 0x30], eax
mov dword [esp + 8], ecx
jne 0x43f604
mov eax, dword [edi + 0x1c]
cmp dword [eax], ecx
jne 0x43f604
xor eax, eax
cmp dword [edi + 0x38], 0
sete al
sub ebx, eax
sbb edx, 0
cmp dword [edi + 0x4c], 0
je 0x43f6da
cmp dword [edi + 0x38], 0
je 0x43f6a6
cmp byte [edi + 0x3d], 0
je 0x43f6a6
mov eax, dword [edi]
mov ecx, edi
push 0xffffffffffffffff
mov dword [esp + 8], edx
call dword [eax + 0xc]
cmp eax, 0xffffffff
je 0x43f6da
mov ecx, dword [edi + 0x38]
lea edx, [edi + 0x40]
mov eax, dword [ecx]
mov dword [esp], eax
lea eax, [esp + 0xc]
push eax
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x18]
push eax
push edx
mov eax, dword [esp + 0x10]
call dword [eax + 0x20]
test eax, eax
je 0x43f674
cmp eax, 1
je 0x43f678
cmp eax, 3
jne 0x43f6da
mov edx, dword [esp + 4]
cmp dword [ebp + 0x14], 1
je 0x43f6ac
jmp 0x43f6b2
mov byte [edi + 0x3d], 0
mov ecx, dword [esp + 0xc]
lea eax, [esp + 0x10]
sub ecx, eax
je 0x43f69c
push dword [edi + 0x4c]
push ecx
push 1
push eax
mov dword [esp + 0x10], ecx
call fcn.004e9c9b
add esp, 0x10
cmp dword [esp], eax
jne 0x43f6da
cmp byte [edi + 0x3d], 0
mov edx, dword [esp + 4]
jne 0x43f6da
cmp dword [ebp + 0x14], 1
jne 0x43f6b2
mov eax, ebx
or eax, edx
je 0x43f6c6
push dword [ebp + 0x14]
push edx
push ebx
push dword [edi + 0x4c]
call fcn.004ed5f0
add esp, 0x10
test eax, eax
jne 0x43f6da
lea eax, [esp + 0x10]
push eax
push dword [edi + 0x4c]
call fcn.004ed626
add esp, 8
test eax, eax
je 0x43f71a
mov dword [esi + 4], 0xffffffff
mov dword [esi], 0xffffffff
mov dword [esi + 0xc], 0
mov dword [esi + 8], 0
mov dword [esi + 0x14], 0
mov dword [esi + 0x10], 0
mov ecx, dword [esp + 0x30]
xor ecx, ebp
call fcn.004dd9ae
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret 0x14
mov eax, dword [edi + 0xc]
mov ecx, dword [esp + 8]
cmp dword [eax], ecx
jne 0x43f739
mov ecx, dword [edi + 0x50]
mov edx, dword [edi + 0x54]
mov dword [eax], ecx
sub edx, ecx
mov eax, dword [edi + 0x1c]
mov dword [eax], ecx
mov eax, dword [edi + 0x2c]
mov dword [eax], edx
mov edx, dword [edi + 0x40]
mov eax, dword [esp + 0x10]
mov edi, dword [edi + 0x44]
mov ecx, dword [esp + 0x14]
mov dword [esi + 4], ecx
mov dword [esi], eax
mov dword [esi + 0xc], 0
mov dword [esi + 8], 0
mov dword [esi + 0x14], edi
mov dword [esi + 0x10], edx
jmp 0x43f703