Function at 0x52c690
Capabilities:
Read file on windows

Disassembly:
test dword [0x87ed4c], 0xfffff000
jne 0x52c6c0
test dword [0x87ed4c], 0xffffffff
jne 0x52cc20
call fcn.007663a0
jmp fcn.0052c690
push ebp
mov ebp, esp
and esp, 0xfffffff8
push edi
push esi
push ebx
sub esp, 0x14
mov ecx, edx
mov edi, ecx
mov dword [esp], eax
mov esi, 0x78d3b0
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x52c6f8
test dl, dl
je 0x52c6f4
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x52c6f8
add edi, 2
add esi, 2
test dl, dl
jne 0x52c6d8
xor eax, eax
jmp 0x52c6fd
sbb eax, eax
or eax, 1
test eax, eax
je 0x52c76b
mov edi, ecx
mov esi, 0x78d3b4
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x52c728
test dl, dl
je 0x52c724
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x52c728
add edi, 2
add esi, 2
test dl, dl
jne 0x52c708
xor eax, eax
jmp 0x52c72d
sbb eax, eax
or eax, 1
test eax, eax
je 0x52c76b
mov edi, ecx
mov esi, 0x78d3a8
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x52c758
test dl, dl
je 0x52c754
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x52c758
add edi, 2
add esi, 2
test dl, dl
jne 0x52c738
xor eax, eax
jmp 0x52c75d
sbb eax, eax
or eax, 1
test eax, eax
je 0x52c76b
mov dword [esp + 4], 0x78d3ac
jmp 0x52c773
mov dword [esp + 4], 0x78d3b4
mov dword [esp + 0xc], 1
mov dword [0x84f850], 0
push 1
push 0x70
call fcn.007435ab
add esp, 8
mov ebx, eax
mov edx, dword [esp]
mov dword [ebx + 0x60], 0
mov ecx, edx
and edx, 0xfffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [edx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x52c7c1
mov eax, edx
add edx, ecx
call fcn.007666f0
add eax, 5
push eax
call fcn.0074334f
pop ecx
mov dword [esp + 8], eax
mov esi, eax
mov edi, dword [esp]
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x52c7d4
mov edx, dword [esp + 8]
mov ecx, edx
and edx, 0xfffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [edx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x52c806
mov eax, edx
add edx, ecx
call fcn.007666f0
dec eax
mov dword [esp + 0xc], eax
je 0x52c82b
mov ecx, dword [esp + 8]
movsx edx, byte [eax + ecx]
cmp edx, 0x2e
je 0x52c82b
cmp edx, 0x2f
je 0x52c82b
cmp edx, 0x5c
je 0x52c82b
dec eax
mov dword [esp + 0xc], eax
jne 0x52c811
mov edx, dword [esp + 8]
cmp byte [eax + edx], 0x2e
jne 0x52c839
mov byte [eax + edx], 0
mov ecx, edx
and edx, 0xfffffff0
pxor xmm0, xmm0
pcmpeqb xmm0, xmmword [edx]
pmovmskb eax, xmm0
and ecx, 0xf
shr eax, cl
bsf eax, eax
jne 0x52c85d
mov eax, edx
add edx, ecx
call fcn.007666f0
add eax, 5
push eax
call fcn.0074334f
mov esi, eax
push dword [esp + 0xc]
push str._s.shp
push esi
call fcn.00743412
push dword [esp + 0x14]
push esi
call fcn.007436ae
add esp, 0x18
mov dword [ebx], eax
test eax, eax
je 0x52cbcc
push dword [esp + 8]
push str._s.shx
push esi
call fcn.00743412
push dword [esp + 0x10]
push esi
call fcn.007436ae
add esp, 0x14
mov dword [ebx + 4], eax
test eax, eax
je 0x52cb7a
push esi
call fcn.00743035
push dword [esp + 0xc]
call fcn.00743035
push 0x64
call fcn.0074334f
mov esi, eax
push dword [ebx]
push 1
push 0x64
push esi
call fcn.0074301a
movzx eax, byte [esi + 0x18]
movzx edx, byte [esi + 0x19]
movzx ecx, byte [esi + 0x1a]
movzx edi, byte [esi + 0x1b]
push dword [ebx + 4]
shl eax, 0x19
shl edx, 0x11
add eax, edx
shl ecx, 9
lea edx, [ecx + edi*2]
add eax, edx
mov dword [ebx + 0xc], eax
push 1
push 0x64
push esi
call fcn.0074301a
add esp, 0x2c
movzx eax, byte [esi]
test eax, eax
jne 0x52c924
movzx eax, byte [esi + 1]
test eax, eax
jne 0x52c924
movzx eax, byte [esi + 2]
cmp eax, 0x27
je 0x52c948
push dword [ebx]
call fcn.00742b21
push dword [ebx + 4]
call fcn.00742b21
push ebx
call fcn.00743035
add esp, 0xc
xor eax, eax
add esp, 0x14
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
movzx eax, byte [esi + 3]
cmp eax, 0xa
je 0x52c956
cmp eax, 0xd
jne 0x52c924
movzx eax, byte [esi + 0x1b]
movzx edx, byte [esi + 0x1a]
movzx edi, byte [esi + 0x19]
movzx ecx, byte [esi + 0x18]
shl edx, 8
add eax, edx
shl edi, 0x10
shl ecx, 0x18
add edi, ecx
add eax, edi
lea edx, [eax + eax - 0x64]
sar edx, 2
shr edx, 0x1d
lea edx, [edx + eax*2 - 0x64]
sar edx, 3
mov dword [ebx + 0x10], edx
movzx eax, byte [esi + 0x20]
mov dword [ebx + 8], eax
test edx, edx
jl 0x52cb56
cmp edx, 0xf424000
jg 0x52cb56
movsd xmm0, qword [esi + 0x24]
movsd qword [esp], xmm0
movsd xmm0, qword [esp]
movsd qword [ebx + 0x20], xmm0
movsd xmm0, qword [esi + 0x2c]
movsd qword [esp], xmm0
movsd xmm0, qword [esp]
movsd qword [ebx + 0x28], xmm0
movsd xmm0, qword [esi + 0x34]
movsd qword [esp], xmm0
movsd xmm0, qword [esp]
movsd qword [ebx + 0x40], xmm0
movsd xmm0, qword [esi + 0x3c]
movsd qword [esp], xmm0
movsd xmm0, qword [esp]
movsd qword [ebx + 0x48], xmm0
movsd xmm0, qword [esi + 0x44]
movsd qword [esp], xmm0
movsd xmm0, qword [esp]
movsd qword [ebx + 0x30], xmm0
movsd xmm0, qword [esi + 0x4c]
movsd qword [esp], xmm0
movsd xmm0, qword [esp]
movsd qword [ebx + 0x50], xmm0
movsd xmm0, qword [esi + 0x54]
movsd qword [esp], xmm0
movsd xmm0, qword [esp]
movsd qword [ebx + 0x38], xmm0
movsd xmm0, qword [esi + 0x5c]
movsd qword [esp], xmm0
movsd xmm0, qword [esp]
movsd qword [ebx + 0x58], xmm0
push esi
call fcn.00743035
mov eax, dword [ebx + 0x10]
mov dword [ebx + 0x14], eax
mov esi, 1
test eax, eax
cmovle eax, esi
shl eax, 2
push eax
call fcn.0074334f
mov dword [ebx + 0x18], eax
mov eax, dword [ebx + 0x14]
test eax, eax
cmovle eax, esi
shl eax, 2
push eax
call fcn.0074334f
mov dword [ebx + 0x1c], eax
mov eax, dword [ebx + 0x10]
test eax, eax
cmovle eax, esi
shl eax, 3
push eax
call fcn.0074334f
mov esi, eax
push dword [ebx + 4]
push dword [ebx + 0x10]
push 8
push esi
call fcn.0074301a
add esp, 0x20
mov dword [esp + 0xc], 0
cmp dword [ebx + 0x10], 0
jbe 0x52cb43
xor eax, eax
mov dword [esp + 8], esi
mov edx, dword [esp + 8]
mov ecx, dword [edx + eax*8]
mov dword [esp], ecx
movzx ecx, byte [esp]
movzx edx, byte [esp + 3]
mov byte [esp], dl
movzx edx, byte [esp + 2]
mov byte [esp + 3], cl
movzx ecx, byte [esp + 1]
mov byte [esp + 1], dl
mov byte [esp + 2], cl
mov edx, dword [esp + 8]
mov ecx, dword [edx + eax*8 + 4]
mov dword [esp + 4], ecx
movzx ecx, byte [esp + 4]
movzx edx, byte [esp + 7]
mov byte [esp + 4], dl
movzx edx, byte [esp + 6]
mov byte [esp + 7], cl
movzx ecx, byte [esp + 5]
mov byte [esp + 5], dl
mov byte [esp + 6], cl
mov edx, dword [esp]
add edx, edx
mov ecx, dword [ebx + 0x18]
mov dword [ecx + eax*4], edx
mov eax, dword [esp + 4]
mov edi, dword [esp + 0xc]
add eax, eax
mov esi, dword [ebx + 0x1c]
mov dword [esi + edi*4], eax
mov eax, dword [esp + 0xc]
inc eax
mov dword [esp + 0xc], eax
cmp eax, dword [ebx + 0x10]
jb 0x52cab6
mov esi, dword [esp + 8]
push esi
call fcn.00743035
pop ecx
mov eax, ebx
add esp, 0x14
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push dword [ebx]
call fcn.00742b21
push dword [ebx + 4]
call fcn.00742b21
push ebx
call fcn.00743035
add esp, 0xc
xor eax, eax
add esp, 0x14
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push dword [esp + 8]
push str._s.SHX
push esi
call fcn.00743412
push dword [esp + 0x10]
push esi
call fcn.007436ae
add esp, 0x14
mov dword [ebx + 4], eax
test eax, eax
jne 0x52c8b5
push dword [ebx]
call fcn.00742b21
push ebx
call fcn.00743035
push dword [esp + 0x10]
call fcn.00743035
push esi
call fcn.00743035
add esp, 0x10
xor eax, eax
add esp, 0x14
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push dword [esp + 8]
push str._s.SHP
push esi
call fcn.00743412
push dword [esp + 0x10]
push esi
call fcn.007436ae
add esp, 0x14
mov dword [ebx], eax
test eax, eax
jne 0x52c88e
push ebx
call fcn.00743035
push dword [esp + 0xc]
call fcn.00743035
push esi
call fcn.00743035
add esp, 0xc
xor eax, eax
add esp, 0x14
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push edi
push esi
push ebp
push ebx
sub esp, 0x10
mov ecx, edx
mov dword [esp], eax
mov edi, ecx
mov esi, 0x78d3b0
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x52cc53
test dl, dl
je 0x52cc4f
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x52cc53
add edi, 2
add esi, 2
test dl, dl
jne 0x52cc33
xor eax, eax
jmp 0x52cc58
sbb eax, eax
or eax, 1
test eax, eax
je 0x52ccc6
mov edi, ecx
mov esi, 0x78d3b4
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x52cc83
test dl, dl
je 0x52cc7f
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x52cc83
add edi, 2
add esi, 2
test dl, dl
jne 0x52cc63
xor eax, eax
jmp 0x52cc88
sbb eax, eax
or eax, 1
test eax, eax
je 0x52ccc6
mov edi, ecx
mov esi, 0x78d3a8
mov dl, byte [edi]
cmp dl, byte [esi]
jne 0x52ccb3
test dl, dl
je 0x52ccaf
mov dl, byte [edi + 1]
cmp dl, byte [esi + 1]
jne 0x52ccb3
add edi, 2
add esi, 2
test dl, dl
jne 0x52cc93
xor eax, eax
jmp 0x52ccb8
sbb eax, eax
or eax, 1
test eax, eax
je 0x52ccc6
mov dword [esp + 4], 0x78d3ac
jmp 0x52ccce
mov dword [esp + 4], 0x78d3b4
mov dword [esp + 0xc], 1
mov dword [0x84f850], 0
push 1
push 0x70
call fcn.007435ab
add esp, 8
mov ebp, eax
mov dword [ebp + 0x60], 0
mov ecx, dword [esp]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x52cd0f
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x52ccfa
dec eax
add eax, 5
push eax
call fcn.0074334f
pop ecx
mov ebx, eax
mov esi, ebx
mov edi, dword [esp]
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x52cd20
mov ecx, ebx
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x52cd43
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x52cd2e
dec eax
dec eax
mov dword [esp + 0xc], eax
je 0x52cd64
movsx edx, byte [eax + ebx]
cmp edx, 0x2e
je 0x52cd64
cmp edx, 0x2f
je 0x52cd64
cmp edx, 0x5c
je 0x52cd64
dec eax
mov dword [esp + 0xc], eax
jne 0x52cd4a
cmp byte [eax + ebx], 0x2e
jne 0x52cd6e
mov byte [eax + ebx], 0
mov ecx, ebx
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x52cd87
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x52cd72
dec eax
add eax, 5
push eax
call fcn.0074334f
mov esi, eax
push ebx
push str._s.shp
push esi
call fcn.00743412
push dword [esp + 0x14]
push esi
call fcn.007436ae
add esp, 0x18
mov dword [ebp], eax
test eax, eax
je 0x52d11b
push ebx
push str._s.shx
push esi
call fcn.00743412
push dword [esp + 0x10]
push esi
call fcn.007436ae
add esp, 0x14
mov dword [ebp + 4], eax
test eax, eax
je 0x52d0d0
push esi
call fcn.00743035
push ebx
call fcn.00743035
push 0x64
call fcn.0074334f
mov ebx, eax
push dword [ebp]
push 1
push 0x64
push ebx
call fcn.0074301a
movzx edi, byte [ebx + 0x18]
shl edi, 0x19
movzx eax, byte [ebx + 0x19]
shl eax, 0x11
add edi, eax
movzx edx, byte [ebx + 0x1a]
shl edx, 9
movzx ecx, byte [ebx + 0x1b]
lea esi, [edx + ecx*2]
add edi, esi
mov dword [ebp + 0xc], edi
push dword [ebp + 4]
push 1
push 0x64
push ebx
call fcn.0074301a
add esp, 0x2c
movzx eax, byte [ebx]
test eax, eax
jne 0x52ce47
movzx eax, byte [ebx + 1]
test eax, eax
jne 0x52ce47
movzx eax, byte [ebx + 2]
cmp eax, 0x27
je 0x52ce6a
push dword [ebp]
call fcn.00742b21
push dword [ebp + 4]
call fcn.00742b21
push ebp
call fcn.00743035
add esp, 0xc
xor eax, eax
add esp, 0x10
pop ebx
pop ebp
pop esi
pop edi
ret
movzx eax, byte [ebx + 3]
cmp eax, 0xa
je 0x52ce78
cmp eax, 0xd
jne 0x52ce47
movzx edi, byte [ebx + 0x1b]
movzx eax, byte [ebx + 0x1a]
shl eax, 8
add edi, eax
movzx ecx, byte [ebx + 0x19]
shl ecx, 0x10
movzx edx, byte [ebx + 0x18]
shl edx, 0x18
add ecx, edx
add edi, ecx
lea esi, [edi + edi - 0x64]
sar esi, 2
shr esi, 0x1d
lea edx, [esi + edi*2 - 0x64]
sar edx, 3
mov dword [ebp + 0x10], edx
movzx eax, byte [ebx + 0x20]
mov dword [ebp + 8], eax
test edx, edx
jl 0x52d0ad
cmp edx, 0xf424000
jg 0x52d0ad
mov eax, dword [ebx + 0x24]
mov dword [esp], eax
mov edx, dword [ebx + 0x28]
mov dword [esp + 4], edx
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x24], edx
mov eax, dword [ebx + 0x2c]
mov dword [esp], eax
mov edx, dword [ebx + 0x30]
mov dword [esp + 4], edx
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [ebp + 0x28], eax
mov dword [ebp + 0x2c], edx
mov eax, dword [ebx + 0x34]
mov dword [esp], eax
mov edx, dword [ebx + 0x38]
mov dword [esp + 4], edx
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [ebp + 0x40], eax
mov dword [ebp + 0x44], edx
mov eax, dword [ebx + 0x3c]
mov dword [esp], eax
mov edx, dword [ebx + 0x40]
mov dword [esp + 4], edx
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [ebp + 0x48], eax
mov dword [ebp + 0x4c], edx
mov eax, dword [ebx + 0x44]
mov dword [esp], eax
mov edx, dword [ebx + 0x48]
mov dword [esp + 4], edx
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x34], edx
mov eax, dword [ebx + 0x4c]
mov dword [esp], eax
mov edx, dword [ebx + 0x50]
mov dword [esp + 4], edx
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [ebp + 0x50], eax
mov dword [ebp + 0x54], edx
mov eax, dword [ebx + 0x54]
mov dword [esp], eax
mov edx, dword [ebx + 0x58]
mov dword [esp + 4], edx
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [ebp + 0x38], eax
mov dword [ebp + 0x3c], edx
mov eax, dword [ebx + 0x5c]
mov dword [esp], eax
mov edx, dword [ebx + 0x60]
mov dword [esp + 4], edx
mov eax, dword [esp]
mov edx, dword [esp + 4]
mov dword [ebp + 0x58], eax
mov dword [ebp + 0x5c], edx
push ebx
call fcn.00743035
mov eax, dword [ebp + 0x10]
mov dword [ebp + 0x14], eax
test eax, eax
jg 0x52cfab
mov eax, 1
shl eax, 2
push eax
call fcn.0074334f
mov dword [ebp + 0x18], eax
mov eax, dword [ebp + 0x14]
test eax, eax
jg 0x52cfc3
mov eax, 1
shl eax, 2
push eax
call fcn.0074334f
mov dword [ebp + 0x1c], eax
mov eax, dword [ebp + 0x10]
test eax, eax
jg 0x52cfdb
mov eax, 1
shl eax, 3
push eax
call fcn.0074334f
mov ebx, eax
push dword [ebp + 4]
push dword [ebp + 0x10]
push 8
push ebx
call fcn.0074301a
add esp, 0x20
mov dword [esp + 0xc], 0
cmp dword [ebp + 0x10], 0
jbe 0x52d09c
xor eax, eax
mov dword [esp + 8], ebx
mov edx, dword [esp + 8]
mov ecx, dword [edx + eax*8]
mov dword [esp], ecx
movzx ecx, byte [esp]
movzx edx, byte [esp + 3]
mov byte [esp], dl
mov byte [esp + 3], cl
movzx edx, byte [esp + 1]
movzx ebx, byte [esp + 2]
mov byte [esp + 1], bl
mov byte [esp + 2], dl
mov edx, dword [esp + 8]
mov ecx, dword [edx + eax*8 + 4]
mov dword [esp + 4], ecx
movzx ecx, byte [esp + 4]
movzx edx, byte [esp + 7]
mov byte [esp + 4], dl
mov byte [esp + 7], cl
movzx edx, byte [esp + 5]
movzx ebx, byte [esp + 6]
mov byte [esp + 5], bl
mov byte [esp + 6], dl
mov edx, dword [esp]
add edx, edx
mov ecx, dword [ebp + 0x18]
mov dword [ecx + eax*4], edx
mov eax, dword [esp + 4]
add eax, eax
mov esi, dword [esp + 0xc]
mov ebx, dword [ebp + 0x1c]
mov dword [ebx + esi*4], eax
mov eax, dword [esp + 0xc]
inc eax
mov dword [esp + 0xc], eax
cmp eax, dword [ebp + 0x10]
jb 0x52d00f
mov ebx, dword [esp + 8]
push ebx
call fcn.00743035
pop ecx
mov eax, ebp
add esp, 0x10
pop ebx
pop ebp
pop esi
pop edi
ret
push dword [ebp]
call fcn.00742b21
push dword [ebp + 4]
call fcn.00742b21
push ebp
call fcn.00743035
add esp, 0xc
xor eax, eax
add esp, 0x10
pop ebx
pop ebp
pop esi
pop edi
ret
push ebx
push str._s.SHX
push esi
call fcn.00743412
push dword [esp + 0x10]
push esi
call fcn.007436ae
add esp, 0x14
mov dword [ebp + 4], eax
test eax, eax
jne 0x52cdda
push dword [ebp]
call fcn.00742b21
push ebp
call fcn.00743035
push ebx
call fcn.00743035
push esi
call fcn.00743035
add esp, 0x10
xor eax, eax
add esp, 0x10
pop ebx
pop ebp
pop esi
pop edi
ret
push ebx
push str._s.SHP
push esi
call fcn.00743412
push dword [esp + 0x10]
push esi
call fcn.007436ae
add esp, 0x14
mov dword [ebp], eax
test eax, eax
jne 0x52cdb6
push ebp
call fcn.00743035
push ebx
call fcn.00743035
push esi
call fcn.00743035
add esp, 0xc
xor eax, eax
add esp, 0x10
pop ebx
pop ebp
pop esi
pop edi
ret