Function at 0x40b991
Capabilities:
Read file on windows

Disassembly:
cmp dword [0x41ab90], 0x32
jb 0x40bc55
cmp dword [0x41ab90], 0x100000
jae 0x40b1f3
mov eax, dword [edi]
mov edx, dword [0x41ab90]
mov byte [eax + edx + 1], 0
mov byte [0x41ac68], 0
mov byte [0x41ac69], 0
mov byte [0x41ac6a], 0
mov esi, dword [0x41ab90]
test esi, esi
jbe 0x40bc1e
mov ebx, 1
cmp byte [0x41ac6a], 0
jne 0x40b23b
mov eax, dword [edi]
cmp byte [eax + ebx], 8
jne 0x40b401
inc byte [0x41ac6a]
jmp 0x40b401
cmp byte [0x41ac6a], 1
jne 0x40b282
mov eax, dword [edi]
mov al, byte [eax + ebx]
mov edx, eax
and dl, 0xf
cmp dl, 9
jne 0x40b276
and eax, 0xff
shr eax, 4
cmp eax, 0xff
ja 0x40b269
bt dword [0x4191b8], eax
jae 0x40b276
inc byte [0x41ac6a]
jmp 0x40b401
mov byte [0x41ac6a], 0
jmp 0x40b401
cmp byte [0x41ac6a], 1
jbe 0x40b2c2
cmp byte [0x41ac6a], 9
jae 0x40b2c2
mov eax, dword [edi]
mov al, byte [eax + ebx]
xor edx, edx
mov dl, al
shr edx, 4
cmp edx, 0xa
jae 0x40b2b6
and al, 0xf
cmp al, 0xa
jae 0x40b2b6
inc byte [0x41ac6a]
jmp 0x40b401
mov byte [0x41ac6a], 0
jmp 0x40b401
mov al, byte [0x41ac6a]
add al, 0xf7
sub al, 7
jae 0x40b2ec
mov eax, dword [edi]
cmp byte [eax + ebx], 0
jne 0x40b2e0
inc byte [0x41ac6a]
jmp 0x40b401
mov byte [0x41ac6a], 0
jmp 0x40b401
cmp byte [0x41ac6a], 0x10
jne 0x40b401
mov eax, 0x41ab14
mov edx, 0x40bfd8
call fcn.00403770
mov eax, dword [0x41abd8]
call fcn.00403a94
mov edx, eax
xor eax, eax
mov al, byte [0x41ac6a]
mov ecx, ebx
sub ecx, eax
mov eax, dword [edi]
add eax, ecx
mov ecx, 9
call fcn.004064d0
mov eax, dword [0x41abd8]
call fcn.0040646c
test al, al
je 0x40b3fa
mov eax, dword [0x41abdc]
call fcn.00403a94
mov edx, eax
mov eax, dword [edi]
add eax, ebx
mov ecx, 0x10
call fcn.004064d0
mov eax, dword [0x41abdc]
call fcn.0040646c
test al, al
je 0x40b3fa
mov edx, dword [0x41abc4]
mov eax, dword [0x41abdc]
call fcn.00403b7c
test eax, eax
jne 0x40b3fa
push dword [0x41abc4]
push 0x40bf20
push 0x40c08c
mov eax, dword [0x41abac]
add eax, ebx
xor edx, edx
mov dl, byte [0x41ac6a]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x14]
call fcn.00405370
push dword [ebp - 0x14]
push 0x40c09c
push dword [0x41abd8]
push 0x40c0a8
push 0x40c0b4
mov eax, dword [0x41abac]
add eax, ebx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x18]
call fcn.00405370
push dword [ebp - 0x18]
push 0x40c09c
push dword [0x41abdc]
mov eax, 0x41abc4
mov edx, 0xb
call fcn.00403954
inc dword [0x41abb8]
mov byte [0x41ac6a], 0
cmp byte [0x41ac68], 0
jne 0x40b421
mov eax, dword [edi]
cmp byte [eax + ebx], 0x30
jne 0x40b7a8
inc byte [0x41ac68]
jmp 0x40b7a8
cmp byte [0x41ac68], 1
jne 0x40b457
mov eax, dword [edi]
cmp byte [eax + ebx], 0x38
jne 0x40b444
inc byte [0x41ac68]
mov byte [0x41ac69], 2
jmp 0x40bc16
mov byte [0x41ac68], 0
mov byte [0x41ac69], 0
add cl, ch
push ecx
add eax, dword [eax]
invalid
cmp byte [0x41ac68], 2
jne 0x40b49e
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x419198], eax
jae 0x40b492
mov eax, dword [edi]
mov al, byte [eax + ebx - 3]
and eax, 0xff
bt dword [0x419178], eax
jae 0x40b492
inc byte [0x41ac68]
jmp 0x40b7a8
mov byte [0x41ac68], 0
jmp 0x40b7a8
cmp byte [0x41ac68], 3
jne 0x40b4c6
mov eax, dword [edi]
cmp byte [eax + ebx], 0x39
jne 0x40b4ba
inc byte [0x41ac68]
jmp 0x40b7a8
mov byte [0x41ac68], 0
jmp 0x40b7a8
cmp byte [0x41ac68], 3
jbe 0x40b502
cmp byte [0x41ac68], 0x11
jae 0x40b502
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x419138], eax
jae 0x40b4f6
inc byte [0x41ac68]
jmp 0x40b7a8
mov byte [0x41ac68], 0
jmp 0x40b7a8
cmp byte [0x41ac68], 0x11
jne 0x40b7a8
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x419138], eax
jae 0x40b7a8
mov eax, dword [edi]
mov al, byte [eax + ebx + 1]
and eax, 0xff
bt dword [0x419178], eax
jae 0x40b7a8
xor eax, eax
mov al, byte [0x41ac68]
mov edx, ebx
sub edx, eax
mov dword [0x41ab94], edx
mov byte [0x41ac68], 0
mov eax, 0x41abc8
call fcn.00403aec
mov edx, dword [edi]
mov ecx, dword [0x41ab94]
add edx, ecx
mov ecx, 0x12
call fcn.0040493c
mov eax, dword [0x41abc8]
call fcn.0040646c
test al, al
je 0x40b7a8
push dword [0x41abbc]
push 0x40bf20
push 0x40c0c4
mov eax, dword [0x41abac]
add eax, dword [0x41ab94]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x1c]
call fcn.00405370
push dword [ebp - 0x1c]
push 0x40c09c
push dword [0x41abc8]
mov eax, 0x41abbc
mov edx, 6
call fcn.00403954
cmp dword [0x41ab94], 0xc8
jbe 0x40b5e7
mov eax, dword [0x41ab94]
sub eax, 0xc8
mov dword [0x41ab9c], eax
jmp 0x40b5f1
mov dword [0x41ab9c], 1
mov eax, dword [0x41ab94]
add eax, 0xc8
mov dword [0x41aba4], eax
mov eax, dword [0x41aba4]
add eax, 0x20
cmp eax, dword [0x41ab90]
jbe 0x40b61a
mov eax, dword [0x41ab90]
mov dword [0x41aba4], eax
mov eax, dword [0x41ab9c]
cmp eax, dword [0x41aba4]
ja 0x40b7a1
mov eax, dword [0x41ab9c]
cmp eax, dword [0x41ab94]
jbe 0x40b646
cmp ebx, dword [0x41ab9c]
jbe 0x40b646
mov dword [0x41ab9c], ebx
cmp byte [0x41ac68], 0x1f
jae 0x40b67f
mov eax, dword [edi]
mov edx, dword [0x41ab9c]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x419158], eax
jae 0x40b673
inc byte [0x41ac68]
jmp 0x40b78a
mov byte [0x41ac68], 0
jmp 0x40b78a
cmp byte [0x41ac68], 0x1f
jne 0x40b78a
mov eax, dword [edi]
mov edx, dword [0x41ab9c]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x419158], eax
jae 0x40b783
mov eax, dword [edi]
mov edx, dword [0x41ab9c]
mov al, byte [eax + edx + 1]
and eax, 0xff
bt dword [0x419178], eax
jae 0x40b783
mov eax, dword [edi]
mov edx, dword [0x41ab9c]
mov al, byte [eax + edx - 0x20]
and eax, 0xff
bt dword [0x419178], eax
jae 0x40b783
mov eax, 0x41abcc
call fcn.00403aec
xor edx, edx
mov dl, byte [0x41ac68]
mov ecx, dword [0x41ab9c]
sub ecx, edx
mov edx, dword [edi]
add edx, ecx
mov ecx, 0x20
call fcn.0040493c
mov eax, dword [0x41abcc]
call fcn.0040646c
test al, al
je 0x40b783
mov edx, dword [0x41abbc]
mov eax, dword [0x41abcc]
call fcn.00403b7c
test eax, eax
jne 0x40b783
push dword [0x41abbc]
push 0x40c0a8
push 0x40c0d4
mov eax, dword [0x41abac]
add eax, dword [0x41ab9c]
xor edx, edx
mov dl, byte [0x41ac68]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x20]
call fcn.00405370
push dword [ebp - 0x20]
push 0x40c09c
push dword [0x41abcc]
mov eax, 0x41abbc
mov edx, 6
call fcn.00403954
inc dword [0x41abb0]
mov byte [0x41ac68], 0
inc dword [0x41ab9c]
mov eax, dword [0x41ab9c]
cmp eax, dword [0x41aba4]
jbe 0x40b62b
mov byte [0x41ac68], 0
cmp byte [0x41ac69], 1
jbe 0x40bc16
cmp byte [0x41ac69], 2
jne 0x40b7dd
mov eax, dword [edi]
cmp byte [eax + ebx], 0x20
jne 0x40b7d1
inc byte [0x41ac69]
jmp 0x40bc16
mov byte [0x41ac69], 0
jmp 0x40bc16
cmp byte [0x41ac69], 3
jne 0x40b810
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x419198], eax
jae 0x40b804
inc byte [0x41ac69]
jmp 0x40bc16
mov byte [0x41ac69], 0
jmp 0x40bc16
cmp byte [0x41ac69], 4
jne 0x40b838
mov eax, dword [edi]
cmp byte [eax + ebx], 0x39
jne 0x40b82c
inc byte [0x41ac69]
jmp 0x40bc16
mov byte [0x41ac69], 0
jmp 0x40bc16
mov al, byte [0x41ac69]
cmp al, 0x1f
ja 0x40b84b
and eax, 0x7f
bt dword [0x40c0d8], eax
jae 0x40b86c
mov eax, dword [edi]
cmp byte [eax + ebx], 0x20
jne 0x40b860
inc byte [0x41ac69]
jmp 0x40bc16
mov byte [0x41ac69], 0
jmp 0x40bc16
mov al, byte [0x41ac69]
cmp al, 0x1f
ja 0x40b87f
and eax, 0x7f
bt dword [0x40c0dc], eax
jae 0x40b8ab
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x419138], eax
jae 0x40b89f
inc byte [0x41ac69]
jmp 0x40bc16
mov byte [0x41ac69], 0
jmp 0x40bc16
cmp byte [0x41ac69], 0x19
jne 0x40bc16
mov eax, dword [edi]
mov al, byte [eax + ebx]
and eax, 0xff
bt dword [0x419138], eax
jae 0x40bc16
mov eax, dword [edi]
mov al, byte [eax + ebx + 1]
and eax, 0xff
bt dword [0x419178], eax
jae 0x40bc16
mov eax, dword [edi]
mov al, byte [eax + ebx - 0x1a]
and eax, 0xff
bt dword [0x419178], eax
jae 0x40bc16
xor eax, eax
mov al, byte [0x41ac69]
mov edx, ebx
sub edx, eax
mov dword [0x41ab98], edx
mov byte [0x41ac69], 0
mov eax, dword [edi]
mov edx, dword [0x41ab98]
lea edx, [eax + edx]
mov eax, 0x41abd0
mov ecx, 0x1a
call fcn.0040380c
lea edx, [ebp - 0x24]
mov eax, dword [0x41abd0]
call fcn.004063e4
mov edx, dword [ebp - 0x24]
mov eax, 0x41abd0
call fcn.00403770
mov eax, dword [0x41abd0]
call fcn.0040646c
pop ss
stosd dword es:[edi], eax
invalid
inc dword [eax + eax*8 + 0x2b9840f]
add byte [eax], al
push dword [0x41abc0]
push 0x40bf20
push 0x40c0e8
mov eax, dword [0x41abac]
add eax, dword [0x41ab98]
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x28]
call fcn.00405370
push dword [ebp - 0x28]
push 0x40c09c
push dword [0x41abd0]
add byte [eax + 0x41abc0], bh
add byte [eax + 0x41abc0], bh
mov edx, 6
call fcn.00403954
cmp dword [0x41ab98], 0xc8
jbe 0x40b9be
mov eax, dword [0x41ab98]
sub eax, 0xc8
mov dword [0x41aba0], eax
jmp 0x40b9c8
mov dword [0x41aba0], 1
mov eax, dword [0x41ab98]
add eax, 0xc8
mov dword [0x41aba8], eax
mov eax, dword [0x41aba8]
add eax, 0x2f
cmp eax, dword [0x41ab90]
jbe 0x40b9f1
mov eax, dword [0x41ab90]
mov dword [0x41aba8], eax
mov eax, dword [0x41aba0]
cmp eax, dword [0x41aba8]
ja 0x40bc0f
mov eax, 0x41ab14
mov edx, 0x40c0f8
call fcn.00403770
mov eax, dword [0x41aba0]
cmp eax, dword [0x41ab98]
jbe 0x40ba2c
cmp ebx, dword [0x41aba0]
jbe 0x40ba2c
mov dword [0x41aba0], ebx
mov al, byte [0x41ac69]
cmp al, 0x2f
ja 0x40ba3f
and eax, 0x7f
bt dword [0x40c1bc], eax
jae 0x40ba71
mov eax, dword [edi]
mov edx, dword [0x41aba0]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x419158], eax
jae 0x40ba65
inc byte [0x41ac69]
jmp 0x40bbe9
mov byte [0x41ac69], 0
jmp 0x40bbe9
mov al, byte [0x41ac69]
cmp al, 0x2f
ja 0x40ba84
and eax, 0x7f
bt dword [0x40c1c4], eax
jae 0x40baab
mov eax, dword [edi]
mov edx, dword [0x41aba0]
cmp byte [eax + edx], 0x20
jne 0x40ba9f
inc byte [0x41ac69]
jmp 0x40bbe9
mov byte [0x41ac69], 0
jmp 0x40bbe9
cmp byte [0x41ac69], 0x2e
jne 0x40bbe9
mov eax, 0x41ab14
mov edx, 0x40c1d4
call fcn.00403770
mov eax, dword [edi]
mov edx, dword [0x41aba0]
mov al, byte [eax + edx]
and eax, 0xff
bt dword [0x419158], eax
jae 0x40bbd3
mov eax, dword [edi]
mov edx, dword [0x41aba0]
mov al, byte [eax + edx + 1]
and eax, 0xff
bt dword [0x419178], eax
jae 0x40bbd3
mov eax, dword [edi]
mov edx, dword [0x41aba0]
mov al, byte [eax + edx - 0x2f]
and eax, 0xff
bt dword [0x419178], eax
jae 0x40bbd3
xor eax, eax
mov al, byte [0x41ac69]
mov edx, dword [0x41aba0]
sub edx, eax
mov eax, dword [edi]
lea edx, [eax + edx]
mov eax, 0x41abd4
mov ecx, 0x2f
call fcn.0040380c
lea edx, [ebp - 0x2c]
mov eax, dword [0x41abd4]
call fcn.004063e4
mov edx, dword [ebp - 0x2c]
mov eax, 0x41abd4
call fcn.00403770
mov eax, dword [0x41abd4]
call fcn.0040646c
test al, al
je 0x40bbd3
mov edx, dword [0x41abc0]
mov eax, dword [0x41abd4]
call fcn.00403b7c
test eax, eax
jne 0x40bbd3
push dword [0x41abc0]
push 0x40c0a8
push 0x40c260
mov eax, dword [0x41abac]
add eax, dword [0x41aba0]
xor edx, edx
mov dl, byte [0x41ac69]
sub eax, edx
xor edx, edx
push edx
push eax
lea eax, [ebp - 0x30]
call fcn.00405370
push dword [ebp - 0x30]
push 0x40c09c
push dword [0x41abd4]
mov eax, 0x41abc0
mov edx, 6
call fcn.00403954
inc dword [0x41abb4]
mov byte [0x41ac69], 0
mov eax, 0x41ab14
mov edx, 0x40c270
call fcn.00403770
inc dword [0x41aba0]
mov eax, 0x41ab14
mov edx, 0x40c2e4
call fcn.00403770
mov eax, dword [0x41aba0]
cmp eax, dword [0x41aba8]
jbe 0x40ba02
mov byte [0x41ac69], 0
inc ebx
dec esi
jne 0x40b21b
mov eax, dword [0x41ab90]
add dword [0x41abac], eax
push 0
push 0x41ab90
push 0x100000
mov eax, dword [edi]
inc eax
push eax
mov eax, dword [0x41ab8c]
push eax
call sub.kernel32.dll_ReadFile_1
test eax, eax
je 0x40bc55
cmp dword [0x41ab90], 0
ja 0x40b1cd
cmp dword [0x41abb0], 0
jbe 0x40bc7b
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x41abbc]
push 0x40bf20
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.00403954
cmp dword [0x41abb4], 0
jbe 0x40bca1
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x41abc0]
push 0x40bf20
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.00403954
cmp dword [0x41abb8], 0
jbe 0x40bcc7
mov eax, dword [ebp - 8]
push dword [eax]
push dword [0x41abc4]
push 0x40bf20
mov eax, dword [ebp - 8]
mov edx, 3
call fcn.00403954
mov eax, 0x41ab14
mov edx, 0x40c2fc
call fcn.00403770
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00403894
cmp eax, 0xed800