Function at 0x4c5780
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c0
mov eax, dword [0x6963f4]
xor eax, ebp
mov dword [ebp - 8], eax
mov edx, dword [ebp + 0x10]
fld1
mov eax, dword [ebp + 8]
fstp qword [ebp - 0xa4]
mov ecx, dword [ebp + 0xc]
fld qword [0x655a98]
push ebx
fstp qword [ebp - 0xac]
push esi
mov dword [ebp - 0x40], edx
mov edx, dword [ebp + 0x18]
mov dword [ebp - 0x30], eax
mov eax, dword [ebp + 0x14]
push edi
mov dword [ebp - 0x90], edx
movzx edx, byte [eax]
push ecx
mov byte [ebp - 0x19], dl
movzx edx, byte [eax + 1]
xor esi, esi
push 8
mov dword [ebp - 0x94], ecx
mov dword [ebp - 0x50], eax
mov al, byte [eax + 2]
lea ecx, [ebp - 0x10]
push 1
push ecx
mov byte [ebp - 0x1b], dl
mov byte [ebp - 0x1c], al
mov dword [ebp - 0x14], esi
mov dword [ebp - 0x18], esi
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x38], esi
mov dword [ebp - 0x60], esi
call fcn.005a210e
lea edx, [ebp - 0x10]
push 8
push edx
call fcn.005ec1f1
add esp, 0x18
test eax, eax
je 0x4c5847
push esi
push esi
push esi
push str.1.2.1
call fcn.005ec77b
add esp, 0x10
cmp eax, esi
mov dword [ebp - 0x14], eax
je 0x4c5847
push eax
call fcn.005ec2c6
add esp, 4
cmp eax, esi
mov dword [ebp - 0x18], eax
push esi
jne 0x4c585a
lea eax, [ebp - 0x14]
push esi
push eax
call fcn.005ed637
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0059e0c2
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.005fc208
add esp, 8
test eax, eax
je 0x4c589e
mov eax, dword [ebp - 0x38]
cmp eax, esi
je 0x4c587a
push eax
call fcn.005a01b3
add esp, 4
push esi
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x14]
push eax
call fcn.005ed637
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0059e0c2
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x94]
mov edx, dword [ebp - 0x14]
push ecx
push edx
call fcn.005ec704
mov eax, dword [ebp - 0x14]
push 8
push eax
call fcn.005ec15d
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
push ecx
push edx
call fcn.005ec95b
push esi
push esi
push esi
lea eax, [ebp - 0x4c]
push eax
lea ecx, [ebp - 0x2c]
push ecx
mov ecx, dword [ebp - 0x18]
lea edx, [ebp - 0x28]
push edx
mov edx, dword [ebp - 0x14]
lea eax, [ebp - 0x24]
push eax
push ecx
push edx
call fcn.005ed971
mov eax, dword [ebp - 0x4c]
add esp, 0x3c
cmp eax, 3
je 0x4c58fb
cmp eax, esi
jne 0x4c591a
cmp dword [ebp - 0x2c], 1
jne 0x4c591a
mov edx, dword [ebp - 0x18]
lea eax, [ebp - 0x3c]
push eax
mov eax, dword [ebp - 0x14]
lea ecx, [ebp - 0x5c]
push ecx
push edx
push eax
mov dword [ebp - 0x4c], 3
call fcn.005eda41
add esp, 0x10
cmp dword [ebp - 0x2c], 0x10
fld qword [ebp - 0xac]
fmul qword [ebp - 0xa4]
fstp qword [ebp - 0x9c]
jne 0x4c593e
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.005eda74
add esp, 4
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
lea edx, [ebp - 0xb4]
push edx
push eax
push ecx
call fcn.005ed948
add esp, 0xc
test eax, eax
je 0x4c597b
fld qword [ebp - 0xb4]
mov edx, dword [ebp - 0x14]
sub esp, 0x10
fstp qword [esp + 8]
fld qword [ebp - 0x9c]
fstp qword [esp]
push edx
call fcn.005eda7d
add esp, 0x14
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
push eax
push ecx
call fcn.005ecdf4
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
push edx
push eax
call fcn.005ed91c
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
push ecx
mov edi, eax
push edx
mov dword [ebp - 0x48], edi
call fcn.005ed932
mov ecx, edi
imul ecx, dword [ebp - 0x28]
movzx eax, al
push ecx
mov dword [ebp - 0x8c], eax
call fcn.005a0b1e
mov ebx, eax
add esp, 0x1c
cmp ebx, esi
mov dword [ebp - 0x38], ebx
je 0x4c587a
mov ecx, dword [ebp - 0x28]
lea edx, [ecx*4]
push edx
call fcn.005a0b1e
mov esi, eax
add esp, 4
test esi, esi
jne 0x4c5a12
push eax
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x14]
push ecx
call fcn.005ed637
add esp, 0xc
push ebx
call fcn.005a01b3
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0059e0c2
mov esp, ebp
pop ebp
ret
xor eax, eax
cmp dword [ebp - 0x28], eax
jle 0x4c5a2d
mov ecx, ebx
jmp 0x4c5a20
mov dword [esi + eax*4], ecx
add eax, 1
add ecx, edi
cmp eax, dword [ebp - 0x28]
jl 0x4c5a20
mov edx, dword [ebp - 0x14]
push esi
push edx
call fcn.005ed20e
push esi
call fcn.005a01b3
mov eax, dword [ebp - 0x14]
add esp, 0xc
push 0
push eax
call fcn.005ed25b
mov ecx, dword [ebp - 0x24]
mov esi, dword [ebp - 0x28]
xor eax, eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x84], eax
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x7c], eax
mov edi, eax
mov dword [ebp - 0x78], eax
mov dword [ebp - 0x74], eax
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x6c], eax
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x4c]
add esp, 8
cmp eax, 3
mov dword [ebp - 0x68], edi
mov dword [ebp - 0x88], 0x28
mov dword [ebp - 0x84], ecx
mov dword [ebp - 0x80], esi
mov word [ebp - 0x7c], 1
jne 0x4c5ab1
mov eax, dword [ebp - 0x2c]
cmp eax, 2
jne 0x4c5aa9
mov ax, 4
mov edi, dword [ebp - 0x3c]
mov dword [ebp - 0x68], edi
jmp 0x4c5ac7
test eax, eax
jne 0x4c5ac3
mov ax, word [ebp - 0x2c]
mov edi, 0x100
mov dword [ebp - 0x68], edi
jmp 0x4c5ac7
mov ax, 0x18
movzx ebx, ax
mov word [ebp - 0x7a], ax
mov eax, ebx
imul eax, ecx
add eax, 0x1f
cdq
and edx, 0x1f
add eax, edx
sar eax, 5
add eax, eax
add eax, eax
mov dword [ebp - 0x58], eax
imul eax, esi
mov esi, dword [ebp - 0x30]
mov dword [ebp - 0x74], eax
call fcn.004e33a0
test edi, edi
je 0x4c5baf
lea esi, [ebp - 0x4bc]
call fcn.00439df0
mov esi, dword [ebp - 0x3c]
xor eax, eax
test esi, esi
je 0x4c5b5b
jle 0x4c5b52
mov ecx, dword [ebp - 0x5c]
add ecx, 1
jmp 0x4c5b20
movzx edx, byte [ecx + 1]
mov byte [ebp + eax*4 - 0x4b6], dl
movzx edx, byte [ecx]
mov byte [ebp + eax*4 - 0x4b7], dl
movzx edx, byte [ecx - 1]
mov byte [ebp + eax*4 - 0x4b8], dl
mov byte [ebp + eax*4 - 0x4b5], 0
add eax, 1
add ecx, 3
cmp eax, esi
jl 0x4c5b20
mov word [ebp - 0x4ba], si
jmp 0x4c5b8f
test edi, edi
jle 0x4c5b84
nop
mov byte [ebp + eax*4 - 0x4b6], al
mov byte [ebp + eax*4 - 0x4b7], al
mov byte [ebp + eax*4 - 0x4b8], al
mov byte [ebp + eax*4 - 0x4b5], 0
add eax, 1
cmp eax, edi
jl 0x4c5b60
mov ax, word [ebp - 0x68]
mov word [ebp - 0x4ba], ax
mov edx, dword [ebp - 0x80]
mov eax, dword [ebp - 0x84]
mov esi, dword [ebp - 0x30]
lea ecx, [ebp - 0x4bc]
push ecx
push ebx
push 1
push edx
push eax
push esi
call fcn.004e3c50
jmp 0x4c5bcb
mov ecx, dword [ebp - 0x80]
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x30]
push 0
push ebx
push 1
push ecx
push edx
push eax
call fcn.004e3c50
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x18]
test byte [eax + 8], 0x80
je 0x4c5be8
cmp byte [eax + 0x78], 1
jne 0x4c5be8
mov ecx, dword [eax + 0x70]
mov dword [esi + 0x38], ecx
mov edx, dword [ebp - 0x18]
mov eax, dword [edx + 0x74]
jmp 0x4c5bf0
mov eax, 0xec4
mov dword [esi + 0x38], eax
mov dword [esi + 0x3c], eax
mov edx, dword [ebp - 0x18]
xor cl, cl
cmp cl, byte [edx + 0x1c]
mov ecx, dword [ebp - 0x90]
mov edx, dword [ebp - 0x40]
sbb eax, eax
neg eax
mov dword [ecx], eax
mov dword [edx], 0
mov ebx, dword [ebp - 0x18]
test byte [ebx + 8], 0x10
je 0x4c5ca8
cmp dword [ebp - 0x3c], 0
je 0x4c5c86
movzx ecx, word [ebx + 0x16]
test cx, cx
je 0x4c5c86
cmp dword [ebx + 0x4c], 0
je 0x4c5c86
movzx edi, cx
or edx, 0xffffffff
xor eax, eax
test edi, edi
mov esi, pe_nt_image_headers32
jle 0x4c5c59
mov ebx, dword [ebx + 0x4c]
movzx ecx, byte [ebx + eax]
cmp ecx, esi
jge 0x4c5c52
mov edx, eax
mov esi, ecx
add eax, 1
cmp eax, edi
jl 0x4c5c46
cmp edx, 0xffffffff
jle 0x4c5ca8
mov eax, dword [ebp - 0x40]
mov dword [eax], 1
mov ecx, dword [ebp - 0x5c]
lea eax, [ecx + edx*2]
add eax, edx
movzx edx, byte [eax]
xor ecx, ecx
mov ch, byte [eax + 2]
mov cl, byte [eax + 1]
mov eax, dword [ebp - 0x50]
shl ecx, 8
or ecx, edx
mov dword [eax], ecx
jmp 0x4c5ca8
mov ecx, dword [ebp - 0x40]
mov dword [ecx], 1
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x50]
xor edx, edx
mov dh, byte [eax + 0x56]
mov dl, byte [eax + 0x54]
movzx eax, byte [eax + 0x52]
shl edx, 8
or edx, eax
mov dword [ecx], edx
mov eax, dword [ebp - 0x40]
mov edx, dword [eax]
mov ecx, dword [ebp - 0x30]
mov dword [ecx + 0xc], edx
cmp dword [eax], 0
je 0x4c5cbf
mov eax, dword [ebp - 0x50]
mov eax, dword [eax]
jmp 0x4c5cc2
or eax, 0xffffffff
mov dword [ecx + 0x10], eax
mov esi, dword [ecx + 0x448]
push 0
lea ecx, [ebp - 0x18]
push ecx
lea edx, [ebp - 0x14]
push edx
call fcn.005ed637
mov eax, dword [ebp - 0x28]
add esp, 0xc
add eax, 0xffffffff
mov dword [ebp - 0x54], eax
js 0x4c5f23
mov edi, dword [ebp - 0x48]
mov ecx, dword [ebp - 0x60]
mov edx, dword [ebp - 0x54]
mov eax, edi
neg eax
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x58]
imul eax, ecx
mov ebx, dword [ebp - 0x24]
add eax, esi
mov dword [ebp - 0x44], eax
mov eax, edx
imul eax, edi
add eax, dword [ebp - 0x38]
mov dword [ebp - 0x34], eax
lea eax, [ecx + edx + 1]
mov dword [ebp - 0x60], eax
nop
mov eax, dword [ebp - 0x8c]
cmp eax, 1
mov edi, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x44]
jne 0x4c5dc4
mov edx, dword [ebp - 0x2c]
cmp edx, 2
jne 0x4c5d8e
lea eax, [ebx + ebx + 7]
cdq
and edx, 7
add eax, edx
mov esi, eax
sar esi, 3
test esi, esi
jle 0x4c5f03
mov al, byte [edi]
mov dl, al
shr dl, 2
and dl, 0xc
mov bl, al
and bl, 0xc3
or dl, bl
shr dl, 2
mov byte [ecx], dl
mov dl, al
and dl, 0xc
add dl, dl
add dl, dl
and al, 3
add ecx, 1
or dl, al
mov byte [ecx], dl
sub esi, 1
add edi, 1
add ecx, 1
test esi, esi
jg 0x4c5d54
jmp 0x4c5f00
mov eax, ebx
imul eax, edx
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
test eax, eax
jle 0x4c5f03
mov esi, dword [ebp - 0x34]
sub esi, dword [ebp - 0x44]
lea ecx, [ecx]
mov dl, byte [esi + ecx]
mov byte [ecx], dl
sub eax, 1
add ecx, 1
test eax, eax
jg 0x4c5db0
jmp 0x4c5f00
cmp eax, 3
jne 0x4c5dfc
test ebx, ebx
mov eax, ebx
jle 0x4c5f03
movzx edx, byte [edi + 2]
mov byte [ecx], dl
movzx edx, byte [edi + 1]
add ecx, 1
mov byte [ecx], dl
movzx edx, byte [edi]
add ecx, 1
mov byte [ecx], dl
sub eax, 1
add ecx, 1
add edi, 3
test eax, eax
jg 0x4c5dd3
jmp 0x4c5f00
test ebx, ebx
mov dword [ebp - 0x48], ebx
jle 0x4c5f03
mov bl, byte [edi]
movzx eax, byte [edi + 1]
add edi, 1
mov dl, byte [edi + 1]
add edi, 1
add edi, 1
mov byte [ebp - 0x1a], al
mov al, byte [edi]
add edi, 1
cmp al, 0xff
mov byte [ebp - 0x1d], bl
jne 0x4c5e3c
mov byte [ecx], dl
mov dl, byte [ebp - 0x1a]
add ecx, 1
mov byte [ecx], dl
add ecx, 1
mov byte [ecx], bl
jmp 0x4c5eec
test al, al
jne 0x4c5e5c
movzx eax, byte [ebp - 0x1c]
mov dl, byte [ebp - 0x1b]
mov byte [ecx], al
movzx eax, byte [ebp - 0x19]
add ecx, 1
mov byte [ecx], dl
add ecx, 1
mov byte [ecx], al
jmp 0x4c5eec
movzx ebx, byte [ebp - 0x1c]
movzx dx, dl
movzx ax, al
imul dx, ax
mov esi, 0xff
sub esi, eax
imul bx, si
add dx, bx
add dx, 0x80
movzx edx, dx
movzx edx, dx
mov ebx, edx
shr ebx, 8
add ebx, edx
movzx edx, byte [ebp - 0x1a]
imul dx, ax
sar ebx, 8
mov byte [ecx], bl
movzx ebx, byte [ebp - 0x1b]
imul bx, si
add dx, bx
add dx, 0x80
movzx edx, dx
movzx edx, dx
mov ebx, edx
shr ebx, 8
add ebx, edx
movzx edx, byte [ebp - 0x1d]
imul dx, ax
movzx ax, byte [ebp - 0x19]
imul ax, si
add dx, ax
add dx, 0x80
movzx eax, dx
movzx eax, ax
add ecx, 1
mov edx, eax
sar ebx, 8
shr edx, 8
mov byte [ecx], bl
add ecx, 1
add edx, eax
sar edx, 8
mov byte [ecx], dl
mov eax, dword [ebp - 0x48]
sub eax, 1
add ecx, 1
test eax, eax
mov dword [ebp - 0x48], eax
jg 0x4c5e07
mov ebx, dword [ebp - 0x24]
mov eax, dword [ebp - 0x54]
mov ecx, dword [ebp - 0x98]
mov edx, dword [ebp - 0x58]
add dword [ebp - 0x34], ecx
add dword [ebp - 0x44], edx
sub eax, 1
test eax, eax
mov dword [ebp - 0x54], eax
jge 0x4c5d20
mov eax, dword [ebp - 0x38]
push eax
call fcn.005a01b3
mov ecx, dword [ebp - 8]
add esp, 4
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.0059e0c2
mov esp, ebp
pop ebp
ret