Function at 0x409eb4
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
mov ecx, 6
push 0
push 0
dec ecx
jne 0x409ebc
push ebx
push esi
push edi
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 4]
call fcn.00403a94
mov edi, 0x415c6c
xor eax, eax
push ebp
push 0x40ab65
push dword fs:[eax]
mov dword fs:[eax], esp
call fcn.00407a98
mov eax, dword [ebp - 8]
call fcn.0040372c
xor ebx, ebx
mov eax, dword [ebp - 4]
call fcn.004038a4
cmp eax, 0x7f
jge 0x409f2d
push 0
push 0x415be0
mov eax, dword [ebp - 4]
call fcn.00403aa4
push eax
call sub.kernel32.dll_OpenFile
mov dword [0x415b8c], eax
cmp dword [0x415b8c], 0xffffffff
jne 0x409f60
mov ebx, 1
jmp 0x409f60
push 0
push 0x80
push 3
push 0
push 0
push 0x80000000
mov eax, dword [ebp - 4]
call fcn.00403aa4
push eax
call sub.kernel32.dll_CreateFileA_1
mov dword [0x415b8c], eax
cmp dword [0x415b8c], 0xffffffff
jne 0x409f60
mov ebx, 2
test ebx, ebx
jbe 0x409fc4
call sub.kernel32.dll_GetLastError_1
mov ebx, eax
mov eax, ebx
cmp eax, 0xcf
ja 0x409f7b
bt dword [0x40ab74], eax
jb 0x409fb4
cmp ebx, 0x4cf
je 0x409fb4
push 0x40ab98
push dword [ebp - 4]
push 0x40aba8
lea edx, [ebp - 0x10]
mov eax, ebx
call fcn.00406310
push dword [ebp - 0x10]
lea eax, [ebp - 0xc]
mov edx, 4
call fcn.00403964
mov eax, dword [ebp - 0xc]
call fcn.0041328c
mov eax, dword [0x415b8c]
push eax
call sub.kernel32.dll_CloseHandle_1
jmp 0x40ab42
mov eax, 0x415bbc
call fcn.0040372c
mov eax, 0x415bc0
call fcn.0040372c
mov eax, 0x415bc4
call fcn.0040372c
xor eax, eax
mov dword [0x415bb0], eax
xor eax, eax
mov dword [0x415bb4], eax
xor eax, eax
mov dword [0x415bb8], eax
xor eax, eax
mov dword [0x415bac], eax
mov eax, 0x415bc8
mov edx, 0x12
call fcn.00403bd4
mov eax, 0x415bcc
mov edx, 0x20
call fcn.00403bd4
mov eax, 0x415bd0
mov edx, 0x1a
call fcn.00403bd4
mov eax, 0x415bd4
mov edx, 0x2f
call fcn.00403bd4
mov eax, 0x415bd8
mov edx, 0x12
call fcn.00403bd4
mov eax, 0x415bdc
mov edx, 0x20
call fcn.00403bd4
mov eax, dword [edi]
mov byte [eax], 0
jmp 0x40aa73
cmp dword [0x415b90], 0x32
jb 0x40aa9f
cmp dword [0x415b90], 0x100000
jae 0x40a088
mov eax, dword [edi]
mov edx, dword [0x415b90]
mov byte [eax + edx + 1], 0
mov byte [0x415c68], 0
mov byte [0x415c69], 0
mov byte [0x415c6a], 0
mov esi, dword [0x415b90]
test esi, esi
jbe 0x40aa68
mov ebx, 1
cmp byte [0x415c6a], 0
jne 0x40a0d0
mov eax, dword [edi]
cmp byte [eax + ebx], 8
jne 0x40a287
inc byte [0x415c6a]
jmp 0x40a287
cmp byte [0x415c6a], 1
jne 0x40a117
mov eax, dword [edi]
mov al, byte [eax + ebx]
mov edx, eax
and dl, 0xf
cmp dl, 9
jne 0x40a10b
and eax, 0xff
shr eax, 4
cmp eax, 0xff
ja 0x40a0fe
bt dword [0x4141b8], eax
jae 0x40a10b
inc byte [0x415c6a]
jmp 0x40a287
mov byte [0x415c6a], 0
jmp 0x40a287
cmp byte [0x415c6a], 1
jbe 0x40a157
cmp byte [0x415c6a], 9
jae 0x40a157
mov eax, dword [edi]
mov al, byte [eax + ebx]
xor edx, edx
mov dl, al
shr edx, 4
cmp edx, 0xa
jae 0x40a14b
and al, 0xf
cmp al, 0xa
jae 0x40a14b
inc byte [0x415c6a]
jmp 0x40a287
mov byte [0x415c6a], 0
jmp 0x40a287
mov al, byte [0x415c6a]
add al, 0xf7
sub al, 7
jae 0x40a181
mov eax, dword [edi]
cmp byte [eax + ebx], 0
jne 0x40a175
inc byte [0x415c6a]
jmp 0x40a287
mov byte [0x415c6a], 0
jmp 0x40a287
cmp byte [0x415c6a], 0x10
jne 0x40a287
mov eax, dword [0x415bd8]
call fcn.00403aa4
mov edx, eax
xor eax, eax
mov al, byte [0x415c6a]
mov ecx, ebx
sub ecx, eax
mov eax, dword [edi]
add eax, ecx
mov ecx, 9
call fcn.004065a0
mov eax, dword [0x415bd8]
call fcn.0040653c
test al, al
je 0x40a280
mov eax, dword [0x415bdc]
call fcn.00403aa4
mov edx, eax
mov eax, dword [edi]
add eax, ebx
mov ecx, 0x10
call fcn.004065a0
mov eax, dword [0x415bdc]
call fcn.0040653c
test al, al
je 0x40a280
mov edx, dword [0x415bc4]
mov eax, dword [0x415bdc]
call fcn.00403b8c
test eax, eax
jne 0x40a280
push dword [0x415bc4]
push 0x40aba8
push 0x40abb4
mov eax, dword [0x415bac]
add eax, ebx
xor edx, edx
mov dl, byte [0x415c6a]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x14]
call fcn.00405440
push dword [ebp - 0x14]
push 0x40abc4
push dword [0x415bd8]
push 0x40abd0
push 0x40abdc
mov eax, dword [0x415bac]
add eax, ebx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x18]
call fcn.00405440
push dword [ebp - 0x18]
push 0x40abc4
push dword [0x415bdc]
mov eax, 0x415bc4
mov edx, 0xb
call fcn.00403964
inc dword [0x415bb8]
mov byte [0x415c6a], 0
cmp byte [0x415c68], 0
jne 0x40a2a7
mov eax, dword [edi]
cmp byte [eax + ebx], 0x30
jne 0x40a62e
inc byte [0x415c68]
jmp 0x40a62e
cmp byte [0x415c68], 1
jne 0x40a2dd
mov eax, dword [edi]
cmp byte [eax + ebx], 0x38
jne 0x40a2ca
inc byte [0x415c68]
mov byte [0x415c69], 2
jmp 0x40aa60
mov byte [0x415c68], 0
mov byte [0x415c69], 0
jmp 0x40a62e
cmp byte [0x415c68], 2
jne 0x40a324
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x414198], eax
jae 0x40a318
mov eax, dword [edi]
mov al, byte [eax + ebx - 3]
and eax, 0xff
bt dword [0x414178], eax
jae 0x40a318
inc byte [0x415c68]
jmp 0x40a62e
mov byte [0x415c68], 0
jmp 0x40a62e
cmp byte [0x415c68], 3
jne 0x40a34c
mov eax, dword [edi]
cmp byte [eax + ebx], 0x39
jne 0x40a340
inc byte [0x415c68]
jmp 0x40a62e
mov byte [0x415c68], 0
jmp 0x40a62e
cmp byte [0x415c68], 3
jbe 0x40a388
cmp byte [0x415c68], 0x11
jae 0x40a388
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x414138], eax
jae 0x40a37c
inc byte [0x415c68]
jmp 0x40a62e
mov byte [0x415c68], 0
jmp 0x40a62e
cmp byte [0x415c68], 0x11
jne 0x40a62e
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x414138], eax
jae 0x40a62e
mov eax, dword [edi]
mov al, byte [eax + ebx + 1]
and eax, 0xff
bt dword [0x414178], eax
jae 0x40a62e
xor eax, eax
mov al, byte [0x415c68]
mov edx, ebx
sub edx, eax
mov dword [0x415b94], edx
mov byte [0x415c68], 0
mov eax, 0x415bc8
call fcn.00403afc
mov edx, dword [edi]
mov ecx, dword [0x415b94]
add edx, ecx
mov ecx, 0x12
call fcn.0040494c
mov eax, dword [0x415bc8]
call fcn.0040653c
test al, al
je 0x40a62e
push dword [0x415bbc]
push 0x40aba8
push 0x40abec
mov eax, dword [0x415bac]
add eax, dword [0x415b94]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x1c]
call fcn.00405440
push dword [ebp - 0x1c]
push 0x40abc4
push dword [0x415bc8]
mov eax, 0x415bbc
mov edx, 6
call fcn.00403964
cmp dword [0x415b94], 0xc8
jbe 0x40a46d
mov eax, dword [0x415b94]
sub eax, 0xc8
mov dword [0x415b9c], eax
jmp 0x40a477
mov dword [0x415b9c], 1
mov eax, dword [0x415b94]
add eax, 0xc8
mov dword [0x415ba4], eax
mov eax, dword [0x415ba4]
add eax, 0x20
cmp eax, dword [0x415b90]
jbe 0x40a4a0
mov eax, dword [0x415b90]
mov dword [0x415ba4], eax
mov eax, dword [0x415b9c]
cmp eax, dword [0x415ba4]
ja 0x40a627
mov eax, dword [0x415b9c]
cmp eax, dword [0x415b94]
jbe 0x40a4cc
cmp ebx, dword [0x415b9c]
jbe 0x40a4cc
mov dword [0x415b9c], ebx
cmp byte [0x415c68], 0x1f
jae 0x40a505
mov eax, dword [edi]
mov edx, dword [0x415b9c]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x414158], eax
jae 0x40a4f9
inc byte [0x415c68]
jmp 0x40a610
mov byte [0x415c68], 0
jmp 0x40a610
cmp byte [0x415c68], 0x1f
jne 0x40a610
mov eax, dword [edi]
mov edx, dword [0x415b9c]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x414158], eax
jae 0x40a609
mov eax, dword [edi]
mov edx, dword [0x415b9c]
mov al, byte [eax + edx + 1]
and eax, 0xff
bt dword [0x414178], eax
jae 0x40a609
mov eax, dword [edi]
mov edx, dword [0x415b9c]
mov al, byte [eax + edx - 0x20]
and eax, 0xff
bt dword [0x414178], eax
jae 0x40a609
mov eax, 0x415bcc
call fcn.00403afc
xor edx, edx
mov dl, byte [0x415c68]
mov ecx, dword [0x415b9c]
sub ecx, edx
mov edx, dword [edi]
add edx, ecx
mov ecx, 0x20
call fcn.0040494c
mov eax, dword [0x415bcc]
call fcn.0040653c
test al, al
je 0x40a609
mov edx, dword [0x415bbc]
mov eax, dword [0x415bcc]
call fcn.00403b8c
test eax, eax
jne 0x40a609
push dword [0x415bbc]
push 0x40abd0
push 0x40abfc
mov eax, dword [0x415bac]
add eax, dword [0x415b9c]
xor edx, edx
mov dl, byte [0x415c68]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x20]
call fcn.00405440
push dword [ebp - 0x20]
push 0x40abc4
push dword [0x415bcc]
mov eax, 0x415bbc
mov edx, 6
call fcn.00403964
inc dword [0x415bb0]
mov byte [0x415c68], 0
inc dword [0x415b9c]
mov eax, dword [0x415b9c]
cmp eax, dword [0x415ba4]
jbe 0x40a4b1
mov byte [0x415c68], 0
cmp byte [0x415c69], 1
jbe 0x40aa60
cmp byte [0x415c69], 2
jne 0x40a663
mov eax, dword [edi]
cmp byte [eax + ebx], 0x20
jne 0x40a657
inc byte [0x415c69]
jmp 0x40aa60
mov byte [0x415c69], 0
jmp 0x40aa60
cmp byte [0x415c69], 3
jne 0x40a696
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x414198], eax
jae 0x40a68a
inc byte [0x415c69]
jmp 0x40aa60
mov byte [0x415c69], 0
jmp 0x40aa60
cmp byte [0x415c69], 4
jne 0x40a6be
mov eax, dword [edi]
cmp byte [eax + ebx], 0x39
jne 0x40a6b2
inc byte [0x415c69]
jmp 0x40aa60
mov byte [0x415c69], 0
jmp 0x40aa60
mov al, byte [0x415c69]
cmp al, 0x1f
ja 0x40a6d1
and eax, 0x7f
bt dword [0x40ac00], eax
jae 0x40a6f2
mov eax, dword [edi]
cmp byte [eax + ebx], 0x20
jne 0x40a6e6
inc byte [0x415c69]
jmp 0x40aa60
mov byte [0x415c69], 0
jmp 0x40aa60
mov al, byte [0x415c69]
cmp al, 0x1f
ja 0x40a705
and eax, 0x7f
bt dword [0x40ac04], eax
jae 0x40a731
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x414138], eax
jae 0x40a725
inc byte [0x415c69]
jmp 0x40aa60
mov byte [0x415c69], 0
jmp 0x40aa60
cmp byte [0x415c69], 0x19
jne 0x40aa60
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x414138], eax
jae 0x40aa60
mov eax, dword [edi]
mov al, byte [eax + ebx + 1]
and eax, 0xff
bt dword [0x414178], eax
jae 0x40aa60
mov eax, dword [edi]
mov al, byte [eax + ebx - 0x1a]
and eax, 0xff
bt dword [0x414178], eax
jae 0x40aa60
xor eax, eax
mov al, byte [0x415c69]
mov edx, ebx
sub edx, eax
mov dword [0x415b98], edx
mov byte [0x415c69], 0
mov eax, dword [edi]
mov edx, dword [0x415b98]
lea edx, [eax + edx]
mov eax, 0x415bd0
mov ecx, 0x1a
call fcn.0040381c
lea edx, [ebp - 0x24]
mov eax, dword [0x415bd0]
call fcn.004064b4
mov edx, dword [ebp - 0x24]
mov eax, 0x415bd0
call fcn.00403780
mov eax, dword [0x415bd0]
call fcn.0040653c
test al, al
je 0x40aa60
push dword [0x415bc0]
push 0x40aba8
push 0x40ac10
mov eax, dword [0x415bac]
add eax, dword [0x415b98]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x28]
call fcn.00405440
push dword [ebp - 0x28]
push 0x40abc4
push dword [0x415bd0]
mov eax, 0x415bc0
mov edx, 6
call fcn.00403964
cmp dword [0x415b98], 0xc8
jbe 0x40a844
mov eax, dword [0x415b98]
sub eax, 0xc8
mov dword [0x415ba0], eax
jmp 0x40a84e
mov dword [0x415ba0], 1
mov eax, dword [0x415b98]
add eax, 0xc8
mov dword [0x415ba8], eax
mov eax, dword [0x415ba8]
add eax, 0x2f
cmp eax, dword [0x415b90]
jbe 0x40a877
mov eax, dword [0x415b90]
mov dword [0x415ba8], eax
mov eax, dword [0x415ba0]
cmp eax, dword [0x415ba8]
ja 0x40aa59
mov eax, dword [0x415ba0]
cmp eax, dword [0x415b98]
jbe 0x40a8a3
cmp ebx, dword [0x415ba0]
jbe 0x40a8a3
mov dword [0x415ba0], ebx
mov al, byte [0x415c69]
cmp al, 0x2f
ja 0x40a8b6
and eax, 0x7f
bt dword [0x40ac18], eax
jae 0x40a8e8
mov eax, dword [edi]
mov edx, dword [0x415ba0]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x414158], eax
jae 0x40a8dc
inc byte [0x415c69]
jmp 0x40aa42
mov byte [0x415c69], 0
jmp 0x40aa42
mov al, byte [0x415c69]
cmp al, 0x2f
ja 0x40a8fb
and eax, 0x7f
bt dword [0x40ac20], eax
jae 0x40a922
mov eax, dword [edi]
mov edx, dword [0x415ba0]
cmp byte [eax + edx], 0x20
jne 0x40a916
inc byte [0x415c69]
jmp 0x40aa42
mov byte [0x415c69], 0
jmp 0x40aa42
cmp byte [0x415c69], 0x2e
jne 0x40aa42
mov eax, dword [edi]
mov edx, dword [0x415ba0]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x414158], eax
jae 0x40aa3b
mov eax, dword [edi]
mov edx, dword [0x415ba0]
mov al, byte [eax + edx + 1]
and eax, 0xff
bt dword [0x414178], eax
jae 0x40aa3b
mov eax, dword [edi]
mov edx, dword [0x415ba0]
mov al, byte [eax + edx - 0x2f]
and eax, 0xff
bt dword [0x414178], eax
jae 0x40aa3b
xor eax, eax
mov al, byte [0x415c69]
mov edx, dword [0x415ba0]
sub edx, eax
mov eax, dword [edi]
lea edx, [eax + edx]
mov eax, 0x415bd4
mov ecx, 0x2f
call fcn.0040381c
lea edx, [ebp - 0x2c]
mov eax, dword [0x415bd4]
call fcn.004064b4
mov edx, dword [ebp - 0x2c]
mov eax, 0x415bd4
call fcn.00403780
mov eax, dword [0x415bd4]
call fcn.0040653c
test al, al
je 0x40aa3b
mov edx, dword [0x415bc0]
mov eax, dword [0x415bd4]
call fcn.00403b8c
test eax, eax
jne 0x40aa3b
push dword [0x415bc0]
push 0x40abd0
push 0x40ac30
mov eax, dword [0x415bac]
add eax, dword [0x415ba0]
xor edx, edx
mov dl, byte [0x415c69]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x30]
call fcn.00405440
push dword [ebp - 0x30]
push 0x40abc4
push dword [0x415bd4]
mov eax, 0x415bc0
mov edx, 6
call fcn.00403964
inc dword [0x415bb4]
mov byte [0x415c69], 0
inc dword [0x415ba0]
mov eax, dword [0x415ba0]
cmp eax, dword [0x415ba8]
jbe 0x40a888
mov byte [0x415c69], 0
inc ebx
dec esi
jne 0x40a0b0
mov eax, dword [0x415b90]
add dword [0x415bac], eax
push 0
push 0x415b90
push 0x100000
mov eax, dword [edi]
inc eax
push eax
mov eax, dword [0x415b8c]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
je 0x40aa9f
cmp dword [0x415b90], 0
ja 0x40a062
cmp dword [0x415bb0], 0
jbe 0x40aac5
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x415bbc]
push 0x40aba8
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.00403964
cmp dword [0x415bb4], 0
jbe 0x40aaeb
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x415bc0]
push 0x40aba8
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.00403964
cmp dword [0x415bb8], 0
jbe 0x40ab11
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x415bc4]
push 0x40aba8
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.00403964
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.004038a4
cmp eax, 0xed800
jle 0x40ab37
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, 0xed800
xor edx, edx
call fcn.00403b04
mov eax, dword [0x415b8c]
push eax
call sub.kernel32.dll_CloseHandle_1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40ab6c
lea eax, [ebp - 0x30]
mov edx, 0xa
call fcn.00403750
lea eax, [ebp - 4]
call fcn.0040372c
ret