Function at 0x410e30
Capabilities:
Read file on windows

Disassembly:
push edi
xor edi, edi
push esi
push ebx
sub esp, 0x30
mov eax, dword [0x438ce8]
cmp eax, 0x2000
jle 0x4111fb
test eax, eax
mov edx, eax
js 0x4111f0
and edx, 0xffffe000
mov ebx, eax
sub ebx, edx
cmp ebx, 0x12
jg 0x41110f
sub eax, ebx
mov dword [0x438cec], eax
mov eax, dword [esp + 0x40]
sub eax, ebx
mov edx, eax
add edx, 0x1fff
js 0x411104
mov esi, edx
mov ebx, 1
sar esi, 0xd
test edi, edi
jne 0x410e9e
cmp ebx, esi
jle 0x411006
test edi, edi
je 0x410f75
mov dword [esp + 4], 0x16
mov edx, dword [0x438cc4]
lea ecx, [esp + 0x10]
mov dword [esp], ecx
mov eax, dword [0x438cc0]
mov edi, dword [0x438cec]
sub edx, eax
add edx, edi
mov dword [0x42848c], edx
call fcn.0040a230
test eax, eax
mov edx, 0x33
je 0x410f6c
lea edx, [esp + 0x14]
lea esi, [esp + 0x18]
mov dword [esp], edx
lea ebx, [esp + 0x1a]
call fcn.0040b990
mov word [0x438d44], ax
lea ecx, [esp + 0x16]
lea edi, [esp + 0x1c]
mov dword [esp], ecx
call fcn.0040b990
mov word [0x438d46], ax
mov dword [esp], esi
call fcn.0040b990
mov word [0x438d48], ax
mov dword [esp], ebx
call fcn.0040b990
mov word [0x438d4a], ax
mov dword [esp], edi
call fcn.0040b9b0
mov dword [0x438d4c], eax
lea edx, [esp + 0x20]
mov dword [esp], edx
call fcn.0040b9b0
mov dword [0x438d50], eax
lea ecx, [esp + 0x24]
mov dword [esp], ecx
call fcn.0040b990
mov word [0x438d54], ax
mov ebx, dword [0x438d4c]
xor edx, edx
mov esi, dword [0x438d50]
add ebx, esi
mov dword [0x428490], ebx
add esp, 0x30
mov eax, edx
pop ebx
pop esi
pop edi
ret
mov ebx, dword [0x42842c]
test ebx, ebx
jne 0x410f88
mov eax, dword [0x4283f8]
test eax, eax
je 0x410fc7
mov dword [esp + 4], 0x410e27
mov esi, dword [0x438ce0]
mov dword [esp], 0x428cb8
mov dword [esp + 8], esi
call sub.msvcrt.dll_sprintf
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0x401
mov dword [esp + 4], 0x428cb8
mov dword [esp], 0x4283f0
call dword [0x439258]
mov dword [esp + 4], 0x40fb80
mov dword [esp], 0x428cb8
call sub.msvcrt.dll_sprintf
mov dword [esp + 8], eax
mov dword [esp + 0xc], 0x401
mov dword [esp + 4], 0x428cb8
mov dword [esp], 0x4283f0
call dword [0x439258]
mov edx, 2
jmp 0x410f6c
mov dword [esp + 0xc], 0
mov eax, dword [0x438cec]
mov ecx, dword [0x438ce4]
sub eax, 0x2000
cdq
mov dword [esp], ecx
mov dword [0x438cec], eax
mov dword [esp + 4], eax
mov dword [esp + 8], edx
call sub.msvcrt.dll__lseeki64
mov dword [esp + 8], 0x2000
mov edx, dword [0x438cc0]
mov ecx, dword [0x438ce4]
mov dword [esp + 4], edx
mov dword [esp], ecx
call sub.msvcrt.dll__read
mov dword [0x438cc8], eax
cmp eax, 0x2000
jne 0x410e96
mov ecx, dword [0x438cc0]
lea edx, [ecx + 0x1fff]
cmp edx, ecx
mov dword [0x438cc4], edx
jb 0x411094
lea esi, [esi]
mov eax, dword [0x438cc4]
cmp byte [eax], 0x50
je 0x4110c0
dec eax
cmp eax, ecx
mov dword [0x438cc4], eax
jae 0x411080
movzx edx, word [ecx]
inc ebx
mov eax, dword [0x438cf8]
test edi, edi
mov word [eax], dx
movzx edx, byte [ecx + 2]
mov byte [eax + 2], dl
jne 0x410e9e
cmp ebx, esi
jle 0x411006
jmp 0x410e96
mov dword [esp + 8], 4
mov dword [esp + 4], 0x427058
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x4110e9
mov ecx, dword [0x438cc0]
mov eax, dword [0x438cc4]
jmp 0x41108a
mov edi, dword [0x438cc4]
mov ecx, dword [0x438cc0]
sub edi, ecx
sub dword [0x438cc8], edi
mov edi, 1
jmp 0x411094
lea edx, [eax + 0x3ffe]
jmp 0x410e80
mov dword [esp + 0xc], 0
sub eax, ebx
cdq
mov dword [esp + 8], edx
mov edx, dword [0x438ce4]
mov dword [esp + 4], eax
mov dword [esp], edx
call sub.msvcrt.dll__lseeki64
mov dword [0x438cec], eax
mov esi, dword [0x438cc0]
mov ecx, dword [0x438ce4]
mov dword [esp + 8], ebx
mov dword [esp + 4], esi
mov dword [esp], ecx
call sub.msvcrt.dll__read
mov dword [0x438cc8], eax
cmp eax, ebx
jne 0x410f75
mov ecx, dword [0x438cc0]
lea esi, [ebx + ecx - 0x16]
cmp esi, ecx
mov dword [0x438cc4], esi
jb 0x411194
lea esi, [esi]
lea edi, [edi]
mov eax, dword [0x438cc4]
cmp byte [eax], 0x50
je 0x4111ac
dec eax
cmp eax, ecx
mov dword [0x438cc4], eax
jae 0x411180
movzx eax, word [ecx]
mov esi, dword [0x438cf8]
mov word [esi], ax
movzx eax, byte [ecx + 2]
mov byte [esi + 2], al
jmp 0x410e6c
mov dword [esp + 8], 4
mov dword [esp + 4], 0x427058
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x4111d5
mov ecx, dword [0x438cc0]
mov eax, dword [0x438cc4]
jmp 0x41118a
mov edx, dword [0x438cc4]
mov edi, 1
mov ecx, dword [0x438cc0]
sub edx, ecx
sub dword [0x438cc8], edx
jmp 0x411194
lea edx, [eax + 0x1fff]
jmp 0x410e52
mov dword [esp + 0xc], 0
mov ebx, dword [0x438ce4]
mov dword [esp + 4], 0
mov dword [esp + 8], 0
mov dword [esp], ebx
call sub.msvcrt.dll__lseeki64
mov edx, dword [0x438cc0]
mov ecx, dword [0x438ce8]
mov dword [esp + 4], edx
mov edx, dword [0x438ce4]
mov dword [esp + 8], ecx
mov dword [esp], edx
call sub.msvcrt.dll__read
cmp eax, dword [0x438ce8]
mov dword [0x438cc8], eax
jne 0x410f75
mov ecx, dword [0x438cc0]
lea esi, [eax + ecx - 0x16]
cmp esi, ecx
mov dword [0x438cc4], esi
jb 0x410e96
mov eax, dword [0x438cc4]
cmp byte [eax], 0x50
je 0x411285
dec eax
cmp eax, ecx
mov dword [0x438cc4], eax
jae 0x41126c
jmp 0x410e96
mov dword [esp + 8], 4
mov dword [esp + 4], 0x427058
mov dword [esp], eax
call sub.msvcrt.dll_strncmp
test eax, eax
je 0x4112ae
mov ecx, dword [0x438cc0]
mov eax, dword [0x438cc4]
jmp 0x411276
mov edi, dword [0x438cc4]
mov eax, dword [0x438cc0]
sub edi, eax
sub dword [0x438cc8], edi
mov edi, 1
jmp 0x410e96