Function at 0x40e1bd
Capabilities:
Read file on windows

Disassembly:
cmp dword [0x42abb0], 0x32
jb 0x40e4e9
cmp dword [0x42abb0], 0x100000
jae 0x40da87
mov eax, dword [edi]
mov edx, dword [0x42abb0]
mov byte [eax + edx + 1], 0
mov byte [0x42ac88], 0
mov byte [0x42ac89], 0
mov byte [0x42ac8a], 0
mov esi, dword [0x42abb0]
test esi, esi
jbe 0x40e4b2
mov ebx, 1
cmp byte [0x42ac8a], 0
jne 0x40dacf
mov eax, dword [edi]
cmp byte [eax + ebx], 8
jne 0x40dc95
inc byte [0x42ac8a]
jmp 0x40dc95
cmp byte [0x42ac8a], 1
jne 0x40db16
mov eax, dword [edi]
mov al, byte [eax + ebx]
mov edx, eax
and dl, 0xf
cmp dl, 9
jne 0x40db0a
and eax, 0xff
shr eax, 4
cmp eax, 0xff
ja 0x40dafd
bt dword [0x4291e0], eax
jae 0x40db0a
inc byte [0x42ac8a]
jmp 0x40dc95
mov byte [0x42ac8a], 0
jmp 0x40dc95
cmp byte [0x42ac8a], 1
jbe 0x40db56
cmp byte [0x42ac8a], 9
jae 0x40db56
mov eax, dword [edi]
mov al, byte [eax + ebx]
xor edx, edx
mov dl, al
shr edx, 4
cmp edx, 0xa
jae 0x40db4a
and al, 0xf
cmp al, 0xa
jae 0x40db4a
inc byte [0x42ac8a]
jmp 0x40dc95
mov byte [0x42ac8a], 0
jmp 0x40dc95
mov al, byte [0x42ac8a]
add al, 0xf7
sub al, 7
jae 0x40db80
mov eax, dword [edi]
cmp byte [eax + ebx], 0
jne 0x40db74
inc byte [0x42ac8a]
jmp 0x40dc95
mov byte [0x42ac8a], 0
jmp 0x40dc95
cmp byte [0x42ac8a], 0x10
jne 0x40dc95
mov eax, 0x42ab30
mov edx, 0x40e860
call fcn.004040c0
mov eax, dword [0x42abf8]
call fcn.00404508
mov edx, eax
xor eax, eax
mov al, byte [0x42ac8a]
mov ecx, ebx
sub ecx, eax
mov eax, dword [edi]
add eax, ecx
mov ecx, 9
call fcn.00407a9c
mov eax, dword [0x42abf8]
call fcn.00407a38
test al, al
je 0x40dc8e
mov eax, dword [0x42abfc]
call fcn.00404508
mov edx, eax
mov eax, dword [edi]
add eax, ebx
mov ecx, 0x10
call fcn.00407a9c
mov eax, dword [0x42abfc]
call fcn.00407a38
test al, al
je 0x40dc8e
mov edx, dword [0x42abe4]
mov eax, dword [0x42abfc]
call fcn.004045f0
test eax, eax
jne 0x40dc8e
push dword [0x42abe4]
push 0x40e788
push 0x40e928
mov eax, dword [0x42abcc]
add eax, ebx
xor edx, edx
mov dl, byte [0x42ac8a]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x14]
call fcn.00406940
push dword [ebp - 0x14]
push 0x40e938
push dword [0x42abf8]
push 0x40e944
push 0x40e950
mov eax, dword [0x42abcc]
add eax, ebx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x18]
call fcn.00406940
push dword [ebp - 0x18]
push 0x40e938
push dword [0x42abfc]
mov eax, 0x42abe4
mov edx, 0xb
call fcn.004043c8
inc dword [0x42abd8]
mov byte [0x42ac8a], 0
cmp byte [0x42ac88], 0
jne 0x40dcb5
mov eax, dword [edi]
cmp byte [eax + ebx], 0x30
jne 0x40e04b
inc byte [0x42ac88]
jmp 0x40e04b
cmp byte [0x42ac88], 1
jne 0x40dcfa
mov eax, dword [edi]
cmp byte [eax + ebx], 0x38
jne 0x40dcd8
inc byte [0x42ac88]
mov byte [0x42ac89], 2
jmp 0x40e4aa
mov byte [0x42ac88], 0
mov byte [0x42ac89], 0
mov eax, 0x42ab30
mov edx, 0x40e960
call fcn.004040c0
jmp 0x40e04b
cmp byte [0x42ac88], 2
jne 0x40dd41
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x4291c0], eax
jae 0x40dd35
mov eax, dword [edi]
mov al, byte [eax + ebx - 3]
and eax, 0xff
bt dword [0x4291a0], eax
jae 0x40dd35
inc byte [0x42ac88]
jmp 0x40e04b
mov byte [0x42ac88], 0
jmp 0x40e04b
cmp byte [0x42ac88], 3
jne 0x40dd69
mov eax, dword [edi]
cmp byte [eax + ebx], 0x39
jne 0x40dd5d
inc byte [0x42ac88]
jmp 0x40e04b
mov byte [0x42ac88], 0
jmp 0x40e04b
cmp byte [0x42ac88], 3
jbe 0x40dda5
cmp byte [0x42ac88], 0x11
jae 0x40dda5
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x429160], eax
jae 0x40dd99
inc byte [0x42ac88]
jmp 0x40e04b
mov byte [0x42ac88], 0
jmp 0x40e04b
cmp byte [0x42ac88], 0x11
jne 0x40e04b
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x429160], eax
jae 0x40e04b
mov eax, dword [edi]
mov al, byte [eax + ebx + 1]
and eax, 0xff
bt dword [0x4291a0], eax
jae 0x40e04b
xor eax, eax
mov al, byte [0x42ac88]
mov edx, ebx
sub edx, eax
mov dword [0x42abb4], edx
mov byte [0x42ac88], 0
mov eax, 0x42abe8
call fcn.00404560
mov edx, dword [edi]
mov ecx, dword [0x42abb4]
add edx, ecx
mov ecx, 0x12
call fcn.0040610c
mov eax, dword [0x42abe8]
call fcn.00407a38
test al, al
je 0x40e04b
push dword [0x42abdc]
push 0x40e788
push 0x40e9b0
mov eax, dword [0x42abcc]
add eax, dword [0x42abb4]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x1c]
call fcn.00406940
push dword [ebp - 0x1c]
push 0x40e938
push dword [0x42abe8]
mov eax, 0x42abdc
mov edx, 6
call fcn.004043c8
cmp dword [0x42abb4], 0xc8
jbe 0x40de8a
mov eax, dword [0x42abb4]
sub eax, 0xc8
mov dword [0x42abbc], eax
jmp 0x40de94
mov dword [0x42abbc], 1
mov eax, dword [0x42abb4]
add eax, 0xc8
mov dword [0x42abc4], eax
mov eax, dword [0x42abc4]
add eax, 0x20
cmp eax, dword [0x42abb0]
jbe 0x40debd
mov eax, dword [0x42abb0]
mov dword [0x42abc4], eax
mov eax, dword [0x42abbc]
cmp eax, dword [0x42abc4]
ja 0x40e044
mov eax, dword [0x42abbc]
cmp eax, dword [0x42abb4]
jbe 0x40dee9
cmp ebx, dword [0x42abbc]
jbe 0x40dee9
mov dword [0x42abbc], ebx
cmp byte [0x42ac88], 0x1f
jae 0x40df22
mov eax, dword [edi]
mov edx, dword [0x42abbc]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x429180], eax
jae 0x40df16
inc byte [0x42ac88]
jmp 0x40e02d
mov byte [0x42ac88], 0
jmp 0x40e02d
cmp byte [0x42ac88], 0x1f
jne 0x40e02d
mov eax, dword [edi]
mov edx, dword [0x42abbc]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x429180], eax
jae 0x40e026
mov eax, dword [edi]
mov edx, dword [0x42abbc]
mov al, byte [eax + edx + 1]
and eax, 0xff
bt dword [0x4291a0], eax
jae 0x40e026
mov eax, dword [edi]
mov edx, dword [0x42abbc]
mov al, byte [eax + edx - 0x20]
and eax, 0xff
bt dword [0x4291a0], eax
jae 0x40e026
mov eax, 0x42abec
call fcn.00404560
xor edx, edx
mov dl, byte [0x42ac88]
mov ecx, dword [0x42abbc]
sub ecx, edx
mov edx, dword [edi]
add edx, ecx
mov ecx, 0x20
call fcn.0040610c
mov eax, dword [0x42abec]
call fcn.00407a38
test al, al
je 0x40e026
mov edx, dword [0x42abdc]
mov eax, dword [0x42abec]
call fcn.004045f0
test eax, eax
jne 0x40e026
push dword [0x42abdc]
push 0x40e944
push 0x40e9c0
mov eax, dword [0x42abcc]
add eax, dword [0x42abbc]
xor edx, edx
mov dl, byte [0x42ac88]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x20]
call fcn.00406940
push dword [ebp - 0x20]
push 0x40e938
push dword [0x42abec]
mov eax, 0x42abdc
mov edx, 6
call fcn.004043c8
inc dword [0x42abd0]
mov byte [0x42ac88], 0
inc dword [0x42abbc]
mov eax, dword [0x42abbc]
cmp eax, dword [0x42abc4]
jbe 0x40dece
mov byte [0x42ac88], 0
cmp byte [0x42ac89], 1
jbe 0x40e4aa
cmp byte [0x42ac89], 2
jne 0x40e080
mov eax, dword [edi]
cmp byte [eax + ebx], 0x20
jne 0x40e074
inc byte [0x42ac89]
jmp 0x40e4aa
mov byte [0x42ac89], 0
jmp 0x40e4aa
cmp byte [0x42ac89], 3
jne 0x40e0b3
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x4291c0], eax
jae 0x40e0a7
inc byte [0x42ac89]
jmp 0x40e4aa
mov byte [0x42ac89], 0
jmp 0x40e4aa
cmp byte [0x42ac89], 4
jne 0x40e0db
mov eax, dword [edi]
cmp byte [eax + ebx], 0x39
jne 0x40e0cf
inc byte [0x42ac89]
jmp 0x40e4aa
mov byte [0x42ac89], 0
jmp 0x40e4aa
mov al, byte [0x42ac89]
cmp al, 0x1f
ja 0x40e0ee
and eax, 0x7f
bt dword [0x40e9c4], eax
jae 0x40e10f
mov eax, dword [edi]
cmp byte [eax + ebx], 0x20
jne 0x40e103
inc byte [0x42ac89]
jmp 0x40e4aa
mov byte [0x42ac89], 0
jmp 0x40e4aa
mov al, byte [0x42ac89]
cmp al, 0x1f
ja 0x40e122
and eax, 0x7f
bt dword [0x40e9c8], eax
jae 0x40e14e
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x429160], eax
jae 0x40e142
inc byte [0x42ac89]
jmp 0x40e4aa
mov byte [0x42ac89], 0
jmp 0x40e4aa
cmp byte [0x42ac89], 0x19
jne 0x40e4aa
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x429160], eax
jae 0x40e4aa
mov eax, dword [edi]
mov al, byte [eax + ebx + 1]
and eax, 0xff
bt dword [0x4291a0], eax
jae 0x40e4aa
mov eax, dword [edi]
mov al, byte [eax + ebx - 0x1a]
and eax, 0xff
bt dword [0x4291a0], eax
jae 0x40e4aa
xor eax, eax
mov al, byte [0x42ac89]
mov edx, ebx
sub edx, eax
mov dword [0x42abb8], edx
mov byte [0x42ac89], 0
mov eax, dword [edi]
mov edx, dword [0x42abb8]
adc eax, 0x42abb8
adc eax, 0x42abb8
lea edx, [eax + edx]
mov eax, 0x42abf0
mov ecx, 0x1a
call fcn.0040415c
lea edx, [ebp - 0x24]
mov eax, dword [0x42abf0]
call fcn.004079b0
mov edx, dword [ebp - 0x24]
mov eax, 0x42abf0
call fcn.004040c0
mov eax, dword [0x42abf0]
call fcn.00407a38
test al, al
je 0x40e4aa
push dword [0x42abe0]
push 0x40e788
push 0x40e9d4
mov eax, dword [0x42abcc]
add eax, dword [0x42abb8]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x28]
call fcn.00406940
push dword [ebp - 0x28]
push 0x40e938
push dword [0x42abf0]
mov eax, 0x42abe0
mov edx, 6
call fcn.004043c8
cmp dword [0x42abb8], 0xc8
jbe 0x40e261
mov eax, dword [0x42abb8]
sub eax, 0xc8
mov dword [0x42abc0], eax
jmp 0x40e26b
mov dword [0x42abc0], 1
mov eax, dword [0x42abb8]
add eax, 0xc8
mov dword [0x42abc8], eax
add byte [ecx + 0x42abc8], ah
add eax, 0x2f
cmp eax, dword [0x42abb0]
jbe 0x40e294
mov eax, dword [0x42abb0]
mov dword [0x42abc8], eax
mov eax, dword [0x42abc0]
cmp eax, dword [0x42abc8]
ja 0x40e4a3
mov eax, 0x42ab30
mov edx, 0x40e9e4
call fcn.004040c0
mov eax, dword [0x42abc0]
cmp eax, dword [0x42abb8]
jbe 0x40e2cf
cmp ebx, dword [0x42abc0]
jbe 0x40e2cf
mov dword [0x42abc0], ebx
mov al, byte [0x42ac89]
cmp al, 0x2f
ja 0x40e2e2
and eax, 0x7f
bt dword [0x40e9fc], eax
jae 0x40e314
mov eax, dword [edi]
mov edx, dword [0x42abc0]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x429180], eax
jae 0x40e308
inc byte [0x42ac89]
jmp 0x40e47d
mov byte [0x42ac89], 0
jmp 0x40e47d
mov al, byte [0x42ac89]
cmp al, 0x2f
ja 0x40e327
and eax, 0x7f
bt dword [0x40ea04], eax
jae 0x40e34e
mov eax, dword [edi]
mov edx, dword [0x42abc0]
cmp byte [eax + edx], 0x20
jne 0x40e342
inc byte [0x42ac89]
jmp 0x40e47d
mov byte [0x42ac89], 0
jmp 0x40e47d
cmp byte [0x42ac89], 0x2e
jne 0x40e47d
mov eax, 0x42ab30
mov edx, 0x40ea14
call fcn.004040c0
mov eax, dword [edi]
mov edx, dword [0x42abc0]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x429180], eax
jae 0x40e476
mov eax, dword [edi]
mov edx, dword [0x42abc0]
mov al, byte [eax + edx + 1]
and eax, 0xff
bt dword [0x4291a0], eax
jae 0x40e476
mov eax, dword [edi]
mov edx, dword [0x42abc0]
mov al, byte [eax + edx - 0x2f]
and eax, 0xff
bt dword [0x4291a0], eax
jae 0x40e476
xor eax, eax
mov al, byte [0x42ac89]
mov edx, dword [0x42abc0]
sub edx, eax
mov eax, dword [edi]
lea edx, [eax + edx]
mov eax, 0x42abf4
mov ecx, 0x2f
call fcn.0040415c
lea edx, [ebp - 0x2c]
mov eax, dword [0x42abf4]
call fcn.004079b0
mov edx, dword [ebp - 0x2c]
mov eax, 0x42abf4
call fcn.004040c0
mov eax, dword [0x42abf4]
call fcn.00407a38
test al, al
je 0x40e476
mov edx, dword [0x42abe0]
mov eax, dword [0x42abf4]
call fcn.004045f0
test eax, eax
jne 0x40e476
push dword [0x42abe0]
push 0x40e944
push 0x40eaec
mov eax, dword [0x42abcc]
add eax, dword [0x42abc0]
xor edx, edx
mov dl, byte [0x42ac89]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x30]
call fcn.00406940
push dword [ebp - 0x30]
push 0x40e938
push dword [0x42abf4]
mov eax, 0x42abe0
mov edx, 6
call fcn.004043c8
inc dword [0x42abd4]
mov byte [0x42ac89], 0
inc dword [0x42abc0]
mov eax, 0x42ab30
mov edx, 0x40eafc
call fcn.004040c0
mov eax, dword [0x42abc0]
cmp eax, dword [0x42abc8]
jbe 0x40e2a5
mov byte [0x42ac89], 0
inc ebx
dec esi
jne 0x40daaf
mov eax, dword [0x42abb0]
add dword [0x42abcc], eax
push 0
push 0x42abb0
push 0x100000
mov eax, dword [edi]
inc eax
push eax
mov eax, dword [0x42abac]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
je 0x40e4e9
cmp dword [0x42abb0], 0
ja 0x40da61
cmp dword [0x42abd0], 0
jbe 0x40e50f
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x42abdc]
push 0x40e788
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.004043c8
cmp dword [0x42abd4], 0
jbe 0x40e535
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x42abe0]
push 0x40e788
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.004043c8
cmp dword [0x42abd8], 0
jbe 0x40e55b
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x42abe4]
push 0x40e788
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.004043c8
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00404308
cmp eax, 0xed800
jle 0x40e581
mov eax, dword [ebp - 8]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov ecx, 0xed800
xor edx, edx
call fcn.00404568
mov eax, dword [0x42abac]
push eax
call sub.kernel32.dll_CloseHandle_1
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x40e5b6
lea eax, [ebp - 0x30]
mov edx, 0xa
call fcn.00404090
lea eax, [ebp - 4]
call fcn.0040406c
ret