Function at 0x40bf20
Capabilities:
Read file on windows
Write file on windows

Disassembly:
sub esp, 0x3f4
push ebx
mov ebx, dword [esp + 0x3fc]
push ebp
push esi
mov esi, dword [sym.imp.KERNEL32.dll_SetFilePointer]
push edi
lea eax, [esp + 0x3c]
xor ebp, ebp
push 1
push eax
push ebp
push ebx
mov dword [esp + 0x48], ebp
mov dword [esp + 0x4c], ebp
call esi
mov dword [esp + 0x38], eax
mov ecx, 0xdb
xor eax, eax
lea edi, [esp + 0x95]
mov byte [esp + 0x94], 0
push ebp
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
lea ecx, [esp + 0x98]
push ebp
push ecx
push ebx
stosb byte es:[edi], al
call fcn.0040c420
add esp, 0x10
test eax, eax
je 0x40bff1
mov ecx, 0xf
xor eax, eax
lea edi, [esp + 0x55]
mov byte [esp + 0x54], 0
rep stosd dword es:[edi], eax
mov ecx, dword [esp + 0x2f0]
lea edx, [esp + 0x2c]
stosw word es:[edi], ax
stosb byte es:[edi], al
push edx
mov edx, dword [esp + 0x2ec]
lea eax, [esp + 0x58]
push 0x40
push eax
mov eax, dword [esp + 0x1c0]
push ecx
push edx
push eax
mov dword [esp + 0x44], ebp
call fcn.00413d40
mov edx, dword [esp + 0x44]
lea ecx, [esp + 0x1d4]
push ecx
lea eax, [esp + 0x70]
push edx
push eax
call fcn.00417130
add esp, 0x24
test eax, eax
jne 0x40bffe
push 0x24a9
push 0x1b
call fcn.00408f80
add esp, 8
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x3f4
ret
mov ecx, dword [esp + 0x1b8]
push ecx
call fcn.00408aa0
add esp, 4
cmp eax, ebp
mov dword [esp + 0x48], eax
jne 0x40c01f
push 0x24b4
push 0xc
jmp 0x40bfe9
cmp dword [esp + 0x1dc], ebp
jne 0x40c038
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3f4
ret
mov edx, dword [esp + 0xb8]
mov eax, dword [esp + 0xb4]
mov edi, dword [esp + 0x40c]
push edx
push eax
push edi
call fcn.0040c330
add esp, 0xc
test eax, eax
jne 0x40c065
push 0x24c1
push 0x25
jmp 0x40bfe9
mov edx, dword [esp + 0x38]
lea ecx, [esp + 0x3c]
push ebp
push ecx
push edx
push ebx
call esi
mov eax, dword [esp + 0x1cc]
mov ecx, dword [esp + 0x1d0]
lea edx, [esp + 0x50]
push 1
push edx
push eax
push ebx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
call esi
push ebp
push ebp
push ebp
push edi
call esi
xor eax, eax
xor esi, esi
mov dword [esp + 0x18], eax
mov dword [esp + 0x34], ebp
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], ebp
mov dword [esp + 0x20], eax
mov dword [esp + 0x30], ebp
xor ebx, ebx
mov ecx, dword [esp + 0x1dc]
inc eax
cmp eax, ecx
mov dword [esp + 0x44], eax
ja 0x40c256
xor ecx, ecx
lea edx, [esp + 0x24]
mov dword [esp + 0x14], ecx
lea eax, [esp + 0x14]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ecx
push ecx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x40c]
push edx
push 0x10
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40c260
mov eax, dword [esp + 0x14]
test eax, eax
jne 0x40c269
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
cmp ecx, eax
jae 0x40c149
test esi, esi
je 0x40c132
push esi
call fcn.004da446
mov eax, dword [esp + 0x20]
add esp, 4
push eax
mov dword [esp + 0x34], eax
call fcn.004da41d
mov esi, eax
add esp, 4
test esi, esi
je 0x40c272
mov ecx, dword [esp + 0x30]
xor eax, eax
mov edx, ecx
mov edi, esi
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
mov edx, dword [esp + 0x408]
and ecx, 3
push 0
rep stosb byte es:[edi], al
mov ecx, dword [esp + 0x20]
lea eax, [esp + 0x28]
push eax
push ecx
push esi
push edx
call dword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x40c28b
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
cmp ecx, eax
jb 0x40c294
mov ecx, dword [esp + 0x18]
push ecx
push eax
push esi
call fcn.004170a0
add esp, 0xc
test eax, eax
je 0x40c29d
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0x20]
cmp eax, edi
jbe 0x40c1b7
mov edi, eax
cmp ebx, edi
jae 0x40c1dd
test ebp, ebp
je 0x40c1c8
push ebp
call fcn.004da446
add esp, 4
push edi
mov ebx, edi
call fcn.004da41d
mov ebp, eax
add esp, 4
test ebp, ebp
je 0x40c2a6
mov ecx, ebx
xor eax, eax
mov edx, ecx
mov edi, ebp
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
lea edx, [esp + 0x28]
and ecx, 3
push edx
rep stosb byte es:[edi], al
mov edx, dword [esp + 0x20]
mov ecx, dword [esp + 0x4c]
push ebx
push ebp
mov eax, dword [ecx]
push edx
mov edx, dword [esp + 0x3c]
push esi
push edx
lea edx, [esp + 0x6c]
xor edi, edi
push edx
mov dword [esp + 0x44], edi
call dword [eax + 0x14]
test eax, eax
je 0x40c2af
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x40c]
lea eax, [esp + 0x40]
push edi
push eax
push ecx
push ebp
push edx
mov dword [esp + 0x54], edi
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x40c2b8
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x28]
cmp eax, ecx
jb 0x40c2bf
mov eax, dword [esp + 0x44]
jmp 0x40c0bc
mov dword [esp + 0x34], 1
jmp 0x40c2d6
push 0x24e8
push 0xd
jmp 0x40c2c6
push 0x24f0
push 0xd
jmp 0x40c2c6
push 0x24fd
push 0x21
call fcn.00408f80
add esp, 8
mov dword [esp + 0x10], 1
jmp 0x40c2e3
push 0x2507
push 0xd
jmp 0x40c2c6
push 0x250d
push 0xd
jmp 0x40c2c6
push 0x2515
push 0x1c
jmp 0x40c2c6
push 0x2524
push 0x21
jmp 0x40c2c6
push 0x2530
push 0x12
jmp 0x40c2c6
push 0x253b
jmp 0x40c2c4
push 0x2541
push 0xe
call fcn.00408f80
add esp, 8
mov dword [esp + 0x10], 1
test esi, esi
je 0x40c2e3
push esi
call fcn.004da446
add esp, 4
test ebp, ebp
je 0x40c2f0
push ebp
call fcn.004da446
add esp, 4
mov ecx, dword [esp + 0x40c]
push ecx
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
mov eax, dword [esp + 0x34]
test eax, eax
je 0x40bff1
mov eax, dword [esp + 0x10]
test eax, eax
jne 0x40bff1
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x3f4
ret