Function at 0x401420
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
mov ecx, dword [ebp + 8]
sub esp, 0x104
mov dword [0x456cec], 0
mov dword [0x456b58], 0
mov dword [0x456b5c], 0
cmp byte [ecx], 0
push ebx
push esi
mov esi, dword [ebp + 0xc]
mov dword [0x456b64], esi
mov dword [0x456b60], 0
jne 0x40147a
push 0x104
lea eax, [ebp - 0x104]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
jmp 0x40148f
lea edx, [ebp - 0x104]
sub edx, ecx
mov al, byte [ecx]
lea ecx, [ecx + 1]
mov byte [edx + ecx - 1], al
test al, al
jne 0x401482
lea eax, [ebp - 0x104]
push 0x444420
push eax
call fcn.00426528
add esp, 8
mov dword [0x456d18], eax
test eax, eax
je 0x4016dd
test esi, esi
jle 0x4014c5
push 0
push esi
push eax
call fcn.00426af6
mov eax, dword [0x456d18]
add esp, 0xc
push eax
push 1
push 0x10
push 0x456b68
call fcn.0042670b
mov eax, dword [0x456b6c]
push dword [0x456d18]
add eax, esi
mov dword [0x456cec], eax
mov eax, dword [0x456b70]
mov dword [0x456d08], eax
call fcn.004262a9
add esp, 0x14
mov byte [0x456b6c], 0
mov ecx, str.DPMX
mov eax, 0x456b68
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x401530
test dl, dl
je 0x40152c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x401530
add eax, 2
add ecx, 2
test dl, dl
jne 0x401510
xor eax, eax
jmp 0x401535
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4016dd
mov ecx, dword [0x456d08]
mov ebx, dword [0x456b74]
shl ecx, 5
add ebx, 0x10
add ebx, ecx
push ebx
mov dword [ebp + 8], ebx
call fcn.0042861d
add esp, 4
mov dword [0x456b60], eax
test eax, eax
je 0x4016dd
lea eax, [ebp - 0x104]
push 0x444420
push eax
call fcn.00426528
add esp, 8
mov dword [0x456d18], eax
test esi, esi
jle 0x401598
push 0
push esi
push eax
call fcn.00426af6
mov eax, dword [0x456d18]
add esp, 0xc
push edi
push eax
push 1
push ebx
push dword [0x456b60]
call fcn.0042670b
push dword [0x456d18]
call fcn.004262a9
mov eax, dword [ebp + 0x14]
add esp, 0x14
sar eax, 0x18
xor ebx, ebx
movzx ecx, al
xor edi, edi
mov eax, 0x24924925
mul ecx
sub ecx, edx
shr ecx, 1
add ecx, edx
shr ecx, 2
cmp dword [ebp + 0x10], 0xffffffff
mov dword [ebp + 0xc], ecx
je 0x40165c
lea eax, [ebp - 0x104]
push 0x444420
push eax
call fcn.00426528
add esp, 8
mov dword [0x456d18], eax
test esi, esi
jle 0x40160d
push edi
push esi
push eax
call fcn.00426af6
mov eax, dword [0x456d18]
add esp, 0xc
push eax
call fcn.00426365
add esp, 4
test eax, eax
js 0x401637
mov esi, dword [ebp + 0xc]
nop dword [eax]
push dword [0x456d18]
add eax, esi
inc edi
add ebx, eax
call fcn.00426365
add esp, 4
test eax, eax
jns 0x401620
push dword [0x456d18]
call fcn.004262a9
movzx eax, bx
add esp, 4
cmp dword [ebp + 0x10], eax
je 0x401659
pop edi
pop esi
mov eax, 0xfffffffe
pop ebx
mov esp, ebp
pop ebp
ret
sub edi, dword [ebp + 8]
mov ebx, dword [ebp + 0x14]
cmp ebx, 0xffffffff
jne 0x401673
mov dword [0x456d0c], 0xaa
lea eax, [ebx + 0x56]
jmp 0x4016ac
movzx eax, byte [ebp + 0x16]
movzx ecx, bl
imul ecx, eax
mov eax, 0xaaaaaaab
mul ecx
movzx ecx, bh
shr edx, 1
xor edx, edi
movzx eax, dl
mov dword [0x456d0c], eax
movzx eax, byte [ebp + 0x17]
imul ecx, eax
mov eax, 0xcccccccd
mul ecx
shr edx, 2
xor edx, edi
xor edx, 0xffffffaa
movzx eax, dl
mov dword [0x456d10], eax
xor ecx, ecx
mov dword [0x456b58], 1
nop dword [eax]
mov al, byte [ebp + ecx - 0x104]
lea ecx, [ecx + 1]
mov byte [ecx + 0x456be7], al
test al, al
jne 0x4016c0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret