Function at 0x4c8410
Capabilities:
Read file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4c0
mov eax, dword [0x69e3d4]
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 [0x65d558]
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 - 0x1a], 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.005a9841
lea edx, [ebp - 0x10]
push 8
push edx
call fcn.005f3ed7
add esp, 0x18
test eax, eax
je 0x4c84d7
push esi
push esi
push esi
push str.1.2.1
call fcn.005f4461
add esp, 0x10
cmp eax, esi
mov dword [ebp - 0x14], eax
je 0x4c84d7
push eax
call fcn.005f3fac
add esp, 4
cmp eax, esi
mov dword [ebp - 0x18], eax
push esi
jne 0x4c84ea
lea eax, [ebp - 0x14]
push esi
push eax
call fcn.005f531d
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.005a58d9
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.00603ef8
add esp, 8
test eax, eax
je 0x4c852e
mov eax, dword [ebp - 0x38]
cmp eax, esi
je 0x4c850a
push eax
call fcn.005a8a7b
add esp, 4
push esi
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x14]
push eax
call fcn.005f531d
add esp, 0xc
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.005a58d9
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 0x94]
mov edx, dword [ebp - 0x14]
push ecx
push edx
call fcn.005f43ea
mov eax, dword [ebp - 0x14]
push 8
push eax
call fcn.005f3e43
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
push ecx
push edx
call fcn.005f4641
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.005f5657
mov eax, dword [ebp - 0x4c]
add esp, 0x3c
cmp eax, 3
je 0x4c858b
cmp eax, esi
jne 0x4c85aa
cmp dword [ebp - 0x2c], 1
jne 0x4c85aa
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.005f5727
add esp, 0x10
cmp dword [ebp - 0x2c], 0x10
fld qword [ebp - 0xac]
fmul qword [ebp - 0xa4]
fstp qword [ebp - 0x9c]
jne 0x4c85ce
mov ecx, dword [ebp - 0x14]
push ecx
call fcn.005f575a
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.005f562e
add esp, 0xc
test eax, eax
je 0x4c860b
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.005f5763
add esp, 0x14
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0x14]
push eax
push ecx
call fcn.005f4ada
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
push edx
push eax
call fcn.005f5602
mov ecx, dword [ebp - 0x18]
mov edx, dword [ebp - 0x14]
push ecx
mov edi, eax
push edx
mov dword [ebp - 0x48], edi
call fcn.005f5618
mov ecx, edi
imul ecx, dword [ebp - 0x28]
movzx eax, al
push ecx
mov dword [ebp - 0x8c], eax
call fcn.005a854a
mov ebx, eax
add esp, 0x1c
cmp ebx, esi
mov dword [ebp - 0x38], ebx
je 0x4c850a
mov ecx, dword [ebp - 0x28]
lea edx, [ecx*4]
push edx
call fcn.005a854a
mov esi, eax
add esp, 4
test esi, esi
jne 0x4c86a2
push eax
lea eax, [ebp - 0x18]
push eax
lea ecx, [ebp - 0x14]
push ecx
call fcn.005f531d
add esp, 0xc
push ebx
call fcn.005a8a7b
add esp, 4
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.005a58d9
mov esp, ebp
pop ebp
ret
xor eax, eax
cmp dword [ebp - 0x28], eax
jle 0x4c86bd
mov ecx, ebx
jmp 0x4c86b0
mov dword [esi + eax*4], ecx
add eax, 1
add ecx, edi
cmp eax, dword [ebp - 0x28]
jl 0x4c86b0
mov edx, dword [ebp - 0x14]
push esi
push edx
call fcn.005f4ef4
push esi
call fcn.005a8a7b
mov eax, dword [ebp - 0x14]
add esp, 0xc
push 0
push eax
call fcn.005f4f41
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 0x4c8741
mov eax, dword [ebp - 0x2c]
cmp eax, 2
jne 0x4c8739
mov ax, 4
mov edi, dword [ebp - 0x3c]
mov dword [ebp - 0x68], edi
jmp 0x4c8757
test eax, eax
jne 0x4c8753
mov ax, word [ebp - 0x2c]
mov edi, 0x100
mov dword [ebp - 0x68], edi
jmp 0x4c8757
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.004e6730
test edi, edi
je 0x4c8861
push 0x400
lea ecx, [ebp - 0x4b8]
push 0
push ecx
mov word [ebp - 0x4bc], 0x300
mov word [ebp - 0x4ba], 0
call fcn.005ab440
mov esi, dword [ebp - 0x3c]
add esp, 0xc
xor eax, eax
test esi, esi
je 0x4c880b
jle 0x4c8802
mov ecx, dword [ebp - 0x5c]
add ecx, 1
jmp 0x4c87d0
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 0x4c87d0
mov word [ebp - 0x4ba], si
jmp 0x4c883f
test edi, edi
jle 0x4c8834
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 0x4c8810
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 0
push ebx
push 1
push edx
push eax
push esi
call fcn.004e6fe0
jmp 0x4c887f
mov ecx, dword [ebp - 0x80]
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x30]
push 0
push 0
push ebx
push 1
push ecx
push edx
push eax
call fcn.004e6fe0
mov esi, dword [ebp - 0x30]
mov eax, dword [ebp - 0x18]
test byte [eax + 8], 0x80
je 0x4c889c
cmp byte [eax + 0x78], 1
jne 0x4c889c
mov ecx, dword [eax + 0x70]
mov dword [esi + 0x38], ecx
mov edx, dword [ebp - 0x18]
mov eax, dword [edx + 0x74]
jmp 0x4c88a4
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 0x4c8962
cmp dword [ebp - 0x3c], 0
je 0x4c8940
movzx ecx, word [ebx + 0x16]
test cx, cx
je 0x4c8940
cmp dword [ebx + 0x4c], 0
je 0x4c8940
movzx esi, cx
or edx, 0xffffffff
xor eax, eax
test esi, esi
mov edi, 0x80
jle 0x4c8913
mov ebx, dword [ebx + 0x4c]
lea ebx, [ebx]
movzx ecx, byte [ebx + eax]
cmp ecx, edi
jge 0x4c890c
mov edx, eax
mov edi, ecx
add eax, 1
cmp eax, esi
jl 0x4c8900
cmp edx, 0xffffffff
jle 0x4c8962
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 0x4c8962
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 ecx, dword [ebp - 0x40]
mov edx, dword [ecx]
mov eax, dword [ebp - 0x30]
mov dword [eax + 0xc], edx
cmp dword [ecx], 0
je 0x4c8979
mov ecx, dword [ebp - 0x50]
mov ecx, dword [ecx]
jmp 0x4c897c
or ecx, 0xffffffff
mov dword [eax + 0x10], ecx
mov esi, dword [eax + 0x448]
push 0
lea edx, [ebp - 0x18]
push edx
lea eax, [ebp - 0x14]
push eax
call fcn.005f531d
mov eax, dword [ebp - 0x28]
add esp, 0xc
add eax, 0xffffffff
mov dword [ebp - 0x54], eax
js 0x4c8be3
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]
lea ecx, [ecx + edx + 1]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x60], ecx
lea esp, [esp]
mov eax, dword [ebp - 0x8c]
cmp eax, 1
mov edi, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x44]
jne 0x4c8a84
mov edx, dword [ebp - 0x2c]
cmp edx, 2
jne 0x4c8a4e
lea eax, [ebx + ebx + 7]
cdq
and edx, 7
add eax, edx
mov esi, eax
sar esi, 3
test esi, esi
jle 0x4c8bc3
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 0x4c8a14
jmp 0x4c8bc0
mov eax, ebx
imul eax, edx
add eax, 7
cdq
and edx, 7
add eax, edx
sar eax, 3
test eax, eax
jle 0x4c8bc3
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 0x4c8a70
jmp 0x4c8bc0
cmp eax, 3
jne 0x4c8abc
test ebx, ebx
mov eax, ebx
jle 0x4c8bc3
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 0x4c8a93
jmp 0x4c8bc0
test ebx, ebx
mov dword [ebp - 0x48], ebx
jle 0x4c8bc3
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 - 0x1b], al
mov al, byte [edi]
add edi, 1
cmp al, 0xff
mov byte [ebp - 0x1d], bl
jne 0x4c8afc
mov byte [ecx], dl
mov dl, byte [ebp - 0x1b]
add ecx, 1
mov byte [ecx], dl
add ecx, 1
mov byte [ecx], bl
jmp 0x4c8bac
test al, al
jne 0x4c8b1c
movzx eax, byte [ebp - 0x1c]
mov dl, byte [ebp - 0x1a]
mov byte [ecx], al
movzx eax, byte [ebp - 0x19]
add ecx, 1
mov byte [ecx], dl
add ecx, 1
mov byte [ecx], al
jmp 0x4c8bac
movzx ebx, byte [ebp - 0x1c]
movzx dx, dl
movzx ax, al
imul dx, ax
mov esi, 0xff
sub esi, eax
imul bx, si
add bx, dx
add bx, 0x80
movzx edx, bx
movzx edx, dx
mov ebx, edx
shr ebx, 8
add ebx, edx
movzx edx, byte [ebp - 0x1a]
sar ebx, 8
imul dx, si
mov byte [ecx], bl
movzx ebx, byte [ebp - 0x1b]
imul bx, ax
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 - 0x19]
imul dx, si
movzx si, byte [ebp - 0x1d]
imul si, ax
add dx, si
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 0x4c8ac7
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 0x4c89e0
mov eax, dword [ebp - 0x38]
push eax
call fcn.005a8a7b
mov ecx, dword [ebp - 8]
add esp, 4
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.005a58d9
mov esp, ebp
pop ebp
ret