Function at 0x401f3d
Capabilities:
Get file size

Disassembly:
enter 0x378, 1
push ebx
push esi
push edi
push 0x40a2ba
push 0x4021f1
call fcn.004081d8
mov al, 0
mov dword [ebp - 0x37c], eax
push 0
push dword [ebp + 8]
call sub.kernel32.dll__lopen
mov edi, eax
cmp edi, 0xffffffff
jne 0x401f71
jmp 0x4021d3
push 0
push edi
call sub.kernel32.dll_GetFileSize
mov ebx, eax
test ebx, ebx
jne 0x401f84
jmp 0x4021d3
push 0x40bba5
mov eax, dword [0x40b54c]
push dword [eax + 0x40]
call fcn.004071ca
lea eax, [ebp - 0x4a]
push eax
lea eax, [ebp - 0x150]
push eax
lea eax, [ebp - 0x14c]
push eax
push dword [ebp + 8]
call fcn.00407286
call fcn.00407b38
pop eax
push dword [eax]
call fcn.00407bec
cmp dword [ebp + 0xc], 0
jne 0x401ff1
lea eax, [ebp - 0x4a]
push eax
lea eax, [ebp - 0x254]
push eax
lea eax, [ebp - 0x250]
push eax
mov eax, dword [0x40b54c]
push dword [eax + 0xc]
call fcn.00407286
call fcn.00407b38
pop eax
push dword [eax]
call fcn.00407bec
jmp 0x402020
lea eax, [ebp - 0x4a]
push eax
lea eax, [ebp - 0x358]
push eax
lea eax, [ebp - 0x354]
push eax
mov eax, dword [0x40b54c]
push dword [eax + 0x16c]
call fcn.00407286
call fcn.00407b38
pop eax
push dword [eax]
call fcn.00407bec
push 0x40bba5
mov eax, dword [ebp - 0x4a]
push eax
call fcn.0040721d
call fcn.00401e81
test al, al
jne 0x40203c
jmp 0x4021d3
lea eax, [ebp - 0x4a]
push eax
push 0
call fcn.00407bec
push 0x2d
lea eax, [ebp - 0x32]
push eax
push edi
call sub.kernel32.dll__lread
mov ebx, eax
cmp dword [ebp + 0xc], 0
je 0x40206f
and esi, 0
jmp 0x40206b
mov al, byte [esi + ebp - 0x32]
xor al, 0x66
mov byte [esi + ebp - 0x32], al
inc esi
cmp ebx, esi
jge 0x402060
mov eax, dword [ebp - 0x3a]
add eax, ebx
mov dword [ebp - 0x3a], eax
lea eax, [ebp - 0x4a]
push eax
lea eax, [ebp - 0x360]
push eax
push dword [ebp - 0x4a]
call fcn.00407c24
lea eax, [ebp - 0x35c]
push eax
mov eax, ebx
add eax, 0x20
push eax
call fcn.00407b20
pop eax
push dword [eax]
call fcn.00407c88
pop eax
push dword [eax]
call fcn.00407bec
mov esi, 1
lea eax, [ebp - 0x36]
push eax
mov eax, esi
lea eax, [eax + eax*2]
lea eax, [eax + ebp - 0x35]
push eax
call fcn.00401ebb
lea eax, [ebp - 0x4a]
push eax
lea eax, [ebp - 0x368]
push eax
push dword [ebp - 0x4a]
call fcn.00407c24
lea eax, [ebp - 0x364]
push eax
mov al, byte [ebp - 0x36]
push eax
call fcn.00407b20
pop eax
push dword [eax]
call fcn.00407c88
lea eax, [ebp - 0x36c]
push eax
mov al, byte [ebp - 0x35]
push eax
call fcn.00407b20
pop eax
push dword [eax]
call fcn.00407c88
lea eax, [ebp - 0x370]
push eax
mov al, byte [ebp - 0x34]
push eax
call fcn.00407b20
pop eax
push dword [eax]
call fcn.00407c88
lea eax, [ebp - 0x374]
push eax
mov al, byte [ebp - 0x33]
push eax
call fcn.00407b20
pop eax
push dword [eax]
call fcn.00407c88
pop eax
push dword [eax]
call fcn.00407bec
inc esi
cmp esi, 0xf
jle 0x4020b1
lea eax, [ebp - 0x4a]
push eax
lea eax, [ebp - 0x378]
push eax
push dword [ebp - 0x4a]
call fcn.00407c24
push 0x40a2b0
call fcn.00407c88
pop eax
push dword [eax]
call fcn.00407bec
mov eax, dword [ebp - 0x4a]
test eax, eax
je 0x402178
mov eax, dword [eax - 4]
cmp eax, 0x7d0
jge 0x402184
cmp ebx, 0x2d
je 0x4021a8
push 0x40bba5
mov eax, dword [ebp - 0x4a]
push eax
call fcn.004071ca
call fcn.00401e81
test al, al
jne 0x40219d
jmp 0x4021d3
lea eax, [ebp - 0x4a]
push eax
push 0
call fcn.00407bec
cmp ebx, 0x2d
je 0x402047
push 0x40bba5
push 0x40a2b3
call fcn.004071ca
call fcn.00401e81
test al, al
jne 0x4021cb
jmp 0x4021d3
mov al, 1
mov dword [ebp - 0x37c], eax
push edi
call sub.kernel32.dll__lclose
xor eax, eax
pop dword fs:[eax]
add esp, 8
push 0x4021f8
push 0x40a2ba
call fcn.0040822c
ret