Function at 0x524b70
Capabilities:
Read file on windows
Write file on windows

Disassembly:
test dword [0x87ed4c], 0xfffff000
jne 0x524ba0
test dword [0x87ed4c], 0xffffffff
jne 0x525130
call fcn.007663a0
jmp fcn.00524b70
push ebp
mov ebp, esp
and esp, 0xffffffc0
push edi
push esi
push ebx
sub esp, 0x1f4
mov edi, ecx
mov esi, eax
test edx, edx
jl 0x525091
mov ecx, dword [esi + 4]
cmp edx, ecx
jg 0x525091
cmp dword [esi + 0x34], 0
je 0x524cf1
mov eax, dword [esi + 0xc]
mov dword [esi + 0x34], 0
pxor xmm0, xmm0
pshufd xmm1, xmm0, 0
mov dword [esp + 0x18], eax
and eax, 0x800000ff
movdqa xmmword [esp + 0x1a0], xmm1
movdqa xmmword [esp + 0x1b0], xmm1
mov byte [esp + 0x1a0], 3
jge 0x524c11
sub eax, 1
or eax, 0xffffff00
inc eax
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x1a8], al
mov eax, ebx
sar eax, 7
shr eax, 0x18
add eax, ebx
mov ebx, dword [esi + 8]
shr eax, 8
mov byte [esp + 0x1a9], al
mov eax, ebx
and eax, 0x800000ff
jge 0x524c45
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x1aa], al
mov eax, ebx
sar eax, 7
shr eax, 0x18
add eax, ebx
mov ebx, dword [esi]
shr eax, 8
mov byte [esp + 0x1ab], al
xor eax, eax
mov dword [esp + 0x10], ebx
push eax
push eax
push ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], edx
call fcn.0074327b
lea eax, [esp + 0x1ac]
push dword [esp + 0x1c]
push 1
push 0x20
push eax
call fcn.00742cfc
mov eax, dword [esi + 0x10]
mov dword [esp + 0x38], eax
push dword [esp + 0x2c]
push eax
push 0x20
push dword [esi + 0x24]
call fcn.00742cfc
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x40]
add esp, 0x2c
mov eax, dword [esp + 0x1c]
shl eax, 5
add eax, 0x20
cmp eax, dword [esp + 0x18]
jge 0x524cf1
mov byte [esp + 0x1d4], 0xd
lea ebx, [esp + 0x1d4]
mov eax, 1
push dword [esp + 0x10]
push eax
push eax
push ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], edx
call fcn.00742cfc
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
add esp, 0x10
cmp edx, ecx
je 0x524cfd
mov eax, dword [esi + 0x28]
jmp 0x524da9
mov eax, esi
mov dword [esp + 0x20], edx
call fcn.005255f0
mov edx, dword [esp + 0x20]
mov ebx, dword [esi + 8]
inc dword [esi + 4]
test ebx, ebx
jle 0x524da4
mov ecx, dword [esi + 0x30]
mov dword [esp + 0x14], ecx
and ecx, 0xf
mov eax, ecx
neg eax
add eax, 0x10
test ecx, ecx
cmovne ecx, eax
lea eax, [ecx + 0x10]
cmp ebx, eax
jl 0x525120
mov eax, ebx
sub eax, ecx
and eax, 0xf
neg eax
add eax, ebx
test ecx, ecx
jbe 0x524d73
mov dword [esp + 0x18], 0
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x14]
mov byte [edx + edi], 0x20
inc edx
cmp edx, ecx
jb 0x524d62
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x10]
movdqa xmm0, xmmword [str._________________r]
mov dword [esp + 0x10], edi
mov edi, dword [esp + 0x14]
movdqa xmmword [ecx + edi], xmm0
add ecx, 0x10
cmp ecx, eax
jb 0x524d83
mov edi, dword [esp + 0x10]
cmp eax, ebx
jae 0x524da4
mov ecx, dword [esp + 0x14]
mov byte [eax + ecx], 0x20
inc eax
cmp eax, ebx
jb 0x524d9b
mov eax, edx
mov dword [esi + 0x28], edx
cmp eax, edx
jne 0x524db2
mov ebx, dword [esi + 0x30]
jmp 0x524dfd
mov eax, esi
mov dword [esp + 0x20], edx
call fcn.005255f0
mov edx, dword [esp + 0x20]
mov ebx, edx
mov eax, dword [esi]
mov ecx, dword [esi + 8]
mov dword [esp + 0x10], ecx
imul ebx, ecx
add ebx, dword [esi + 0xc]
push 0
push ebx
push eax
mov dword [esp + 0x20], eax
call fcn.0074327b
mov eax, dword [esp + 0x20]
push eax
mov ebx, dword [esi + 0x30]
push 1
push dword [esp + 0x24]
push ebx
call fcn.0074301a
mov edx, dword [esp + 0x3c]
add esp, 0x1c
mov dword [esi + 0x28], edx
mov eax, 1
cmp dword [ebp + 0x14], 0
mov dword [esi + 0x2c], eax
mov dword [esi + 0x38], eax
je 0x5250a0
mov eax, dword [esi + 0x20]
movsx eax, byte [eax + edi]
cmp eax, 0x44
je 0x524ee8
cmp eax, 0x4e
je 0x524ee8
cmp eax, 0x46
je 0x524ee8
cmp eax, 0x4c
jne 0x524e68
mov eax, dword [esi + 0x18]
cmp dword [eax + edi*4], 0
jle 0x52507f
mov eax, dword [ebp + 0x14]
movsx eax, byte [eax]
cmp eax, 0x54
je 0x524e5a
cmp eax, 0x46
jne 0x52507f
mov edx, dword [esi + 0x14]
mov ecx, dword [edx + edi*4]
mov byte [ecx + ebx], al
jmp 0x52507f
mov edx, dword [ebp + 0x14]
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 0x524e8f
mov eax, edx
add edx, ecx
call fcn.007666f0
mov edx, dword [esi + 0x18]
mov esi, dword [esi + 0x14]
mov ecx, dword [edx + edi*4]
cmp eax, ecx
jg 0x524ed6
mov edx, ebx
add edx, dword [esi + edi*4]
push ecx
push 0x20
push edx
call fcn.00766740
add esp, 0xc
mov edx, dword [ebp + 0x14]
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 0x524ed4
mov eax, edx
add edx, ecx
call fcn.007666f0
mov ecx, eax
add ebx, dword [esi + edi*4]
push ecx
push dword [ebp + 0x14]
push ebx
call fcn.007430d0
jmp 0x52507c
mov eax, dword [esi + 0x1c]
mov edx, dword [esi + 0x18]
mov eax, dword [eax + edi*4]
mov dword [esp + 0x1d8], edx
test eax, eax
jne 0x524fbc
mov eax, edx
mov edx, 0x18e
cmp dword [eax + edi*4], 0x18e
lea ecx, [esp + 0x1c0]
cmovbe edx, dword [eax + edi*4]
push edx
push str.___dd
push ecx
call fcn.00743412
mov edx, dword [ebp + 0x14]
cvttsd2si ecx, qword [edx]
lea eax, [esp + 0x1c]
push ecx
lea edx, [esp + 0x1d0]
push edx
push eax
call fcn.00743412
add esp, 0x18
lea edx, [esp + 0x10]
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 0x524f6a
mov eax, edx
add edx, ecx
call fcn.007666f0
mov edx, dword [esp + 0x1d8]
mov edx, dword [edx + edi*4]
cmp eax, edx
jle 0x524fa5
mov byte [esp + edx + 0x10], 0
lea edx, [esp + 0x10]
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 0x524fa5
mov eax, edx
add edx, ecx
call fcn.007666f0
mov edx, dword [esi + 0x14]
add ebx, dword [edx + edi*4]
push eax
lea eax, [esp + 0x14]
push eax
push ebx
call fcn.007430d0
jmp 0x52507c
mov ecx, 0x18e
cmp dword [edx + edi*4], 0x18e
cmovbe ecx, dword [edx + edi*4]
push eax
push ecx
push 0x7948cc
lea eax, [esp + 0x1cc]
push eax
call fcn.00743412
add esp, 0x10
mov ecx, dword [ebp + 0x14]
lea eax, [esp + 0x10]
movsd xmm0, qword [ecx]
mov dword [esp], eax
lea edx, [esp + 0x1c0]
mov dword [esp + 4], edx
movsd qword [esp + 8], xmm0
call fcn.00743412
lea edx, [esp + 0x10]
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 0x52502f
mov eax, edx
add edx, ecx
call fcn.007666f0
mov edx, dword [esp + 0x1d8]
mov edx, dword [edx + edi*4]
cmp eax, edx
jle 0x52506a
mov byte [esp + edx + 0x10], 0
lea edx, [esp + 0x10]
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 0x52506a
mov eax, edx
add edx, ecx
call fcn.007666f0
mov edx, dword [esi + 0x14]
add ebx, dword [edx + edi*4]
push eax
lea eax, [esp + 0x14]
push eax
push ebx
call fcn.007430d0
add esp, 0xc
mov eax, 1
add esp, 0x1f4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor eax, eax
add esp, 0x1f4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
mov eax, dword [esi + 0x20]
movsx eax, byte [eax + edi]
cmp eax, 0x4e
je 0x5250f7
cmp eax, 0x46
je 0x5250f7
cmp eax, 0x44
jne 0x5250cc
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
add ebx, dword [eax + edi*4]
push dword [edx + edi*4]
push 0x30
push ebx
call fcn.00766740
jmp 0x52510b
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
cmp eax, 0x4c
jne 0x5250e7
add ebx, dword [edx + edi*4]
push dword [ecx + edi*4]
push 0x3f
push ebx
call fcn.00766740
jmp 0x52510b
add ebx, dword [edx + edi*4]
push dword [ecx + edi*4]
push 0
push ebx
call fcn.00766740
jmp 0x52510b
mov eax, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
add ebx, dword [eax + edi*4]
push dword [edx + edi*4]
push 0x2a
push ebx
call fcn.00766740
add esp, 0xc
mov eax, 1
add esp, 0x1f4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor eax, eax
jmp 0x524d93
push ebp
mov ebp, esp
and esp, 0xffffffe0
push edi
push esi
push ebx
sub esp, 0x1f4
mov edi, ecx
mov esi, eax
test edx, edx
jl 0x525550
mov ecx, dword [esi + 4]
cmp edx, ecx
jg 0x525550
cmp dword [esi + 0x34], 0
je 0x525276
mov dword [esi + 0x34], 0
xor eax, eax
mov byte [esp + eax + 0x1bc], 0
inc eax
cmp eax, 0x20
jl 0x525169
mov byte [esp + 0x1bc], 3
mov eax, dword [esi + 0xc]
mov dword [esp + 0x18], eax
and eax, 0x800000ff
jge 0x525196
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x1c4], al
mov ebx, dword [esp + 0x18]
mov eax, ebx
sar eax, 7
shr eax, 0x18
add eax, ebx
shr eax, 8
mov byte [esp + 0x1c5], al
mov ebx, dword [esi + 8]
mov eax, ebx
and eax, 0x800000ff
jge 0x5251ca
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x1c6], al
mov eax, ebx
sar eax, 7
shr eax, 0x18
add eax, ebx
shr eax, 8
mov byte [esp + 0x1c7], al
mov ebx, dword [esi]
mov dword [esp + 0x10], ebx
xor eax, eax
push eax
push eax
push ebx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x2c], edx
call fcn.0074327b
lea eax, [esp + 0x1c8]
push dword [esp + 0x1c]
push 1
push 0x20
push eax
call fcn.00742cfc
mov eax, dword [esi + 0x10]
mov dword [esp + 0x38], eax
push dword [esp + 0x2c]
push eax
push 0x20
push dword [esi + 0x24]
call fcn.00742cfc
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x40]
add esp, 0x2c
mov eax, dword [esp + 0x1c]
shl eax, 5
add eax, 0x20
cmp eax, dword [esp + 0x18]
jge 0x525276
mov byte [esp + 0x1b4], 0xd
lea ebx, [esp + 0x1b4]
mov eax, 1
push dword [esp + 0x10]
push eax
push eax
push ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], edx
call fcn.00742cfc
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x24]
add esp, 0x10
cmp edx, ecx
je 0x52527f
mov eax, dword [esi + 0x28]
jmp 0x5252bd
mov eax, esi
mov dword [esp + 0x20], edx
call fcn.005255f0
mov edx, dword [esp + 0x20]
inc dword [esi + 4]
mov ebx, dword [esi + 8]
test ebx, ebx
jle 0x5252b8
mov ecx, dword [esi + 0x30]
cmp ebx, 0x60
jle 0x52555f
push ebx
push 0x20
push ecx
mov dword [esp + 0x2c], edx
call fcn.00766740
mov edx, dword [esp + 0x2c]
add esp, 0xc
mov eax, edx
mov dword [esi + 0x28], edx
cmp eax, edx
jne 0x5252c6
mov ebx, dword [esi + 0x30]
jmp 0x525311
mov eax, esi
mov dword [esp + 0x20], edx
call fcn.005255f0
mov edx, dword [esp + 0x20]
mov eax, dword [esi]
mov ecx, dword [esi + 8]
mov dword [esp + 0x10], ecx
mov ebx, edx
imul ebx, ecx
add ebx, dword [esi + 0xc]
push 0
push ebx
push eax
mov dword [esp + 0x20], eax
call fcn.0074327b
mov eax, dword [esp + 0x20]
mov ebx, dword [esi + 0x30]
push eax
push 1
push dword [esp + 0x24]
push ebx
call fcn.0074301a
mov edx, dword [esp + 0x3c]
add esp, 0x1c
mov dword [esi + 0x28], edx
mov eax, 1
mov dword [esi + 0x2c], eax
mov dword [esi + 0x38], eax
cmp dword [ebp + 0x14], 0
je 0x52556f
mov eax, dword [esi + 0x20]
movsx eax, byte [eax + edi]
cmp eax, 0x44
je 0x5253e2
cmp eax, 0x4e
je 0x5253e2
cmp eax, 0x46
je 0x5253e2
cmp eax, 0x4c
jne 0x52537c
mov eax, dword [esi + 0x18]
cmp dword [eax + edi*4], 0
jle 0x52553e
mov eax, dword [ebp + 0x14]
movsx eax, byte [eax]
cmp eax, 0x54
je 0x52536e
cmp eax, 0x46
jne 0x52553e
mov edx, dword [esi + 0x14]
mov ecx, dword [edx + edi*4]
mov byte [ecx + ebx], al
jmp 0x52553e
mov ecx, dword [ebp + 0x14]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x525396
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x525381
dec eax
mov edx, dword [esi + 0x18]
mov esi, dword [esi + 0x14]
mov ecx, dword [edx + edi*4]
cmp eax, ecx
jg 0x5253d0
mov edx, ebx
add edx, dword [esi + edi*4]
push ecx
push 0x20
push edx
call fcn.00766740
add esp, 0xc
mov ecx, dword [ebp + 0x14]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x5253ce
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x5253b9
dec eax
mov ecx, eax
add ebx, dword [esi + edi*4]
push ecx
push dword [ebp + 0x14]
push ebx
call fcn.007430d0
jmp 0x52553b
mov eax, dword [esi + 0x1c]
mov eax, dword [eax + edi*4]
mov edx, dword [esi + 0x18]
mov dword [esp + 0x1b8], edx
test eax, eax
jne 0x52549f
mov eax, edx
mov edx, dword [eax + edi*4]
lea ecx, [esp + 0x1a0]
cmp edx, 0x18e
jbe 0x525413
mov edx, 0x18e
push edx
push str.___dd
push ecx
call fcn.00743412
lea edx, [esp + 0x1c]
mov ecx, dword [ebp + 0x14]
fld qword [ecx]
call fcn.00766870
push eax
lea ecx, [esp + 0x1b0]
push ecx
push edx
call fcn.00743412
add esp, 0x18
lea ecx, [esp + 0x10]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x52545a
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x525445
dec eax
mov edx, dword [esp + 0x1b8]
mov edx, dword [edx + edi*4]
cmp eax, edx
jle 0x525488
mov byte [esp + edx + 0x10], 0
lea ecx, [esp + 0x10]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x525488
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x525473
dec eax
mov edx, dword [esi + 0x14]
add ebx, dword [edx + edi*4]
push eax
lea eax, [esp + 0x14]
push eax
push ebx
call fcn.007430d0
jmp 0x52553b
mov ecx, dword [edx + edi*4]
lea edx, [esp + 0x1a0]
cmp ecx, 0x18e
jbe 0x5254b6
mov ecx, 0x18e
push eax
push ecx
push 0x7948cc
push edx
call fcn.00743412
lea ecx, [esp + 0x20]
mov eax, dword [ebp + 0x14]
push dword [eax + 4]
push dword [eax]
lea edx, [esp + 0x1b8]
push edx
push ecx
call fcn.00743412
add esp, 0x20
lea ecx, [esp + 0x10]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x5254fb
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x5254e6
dec eax
mov edx, dword [esp + 0x1b8]
mov edx, dword [edx + edi*4]
cmp eax, edx
jle 0x525529
mov byte [esp + edx + 0x10], 0
lea ecx, [esp + 0x10]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x525529
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x525514
dec eax
mov edx, dword [esi + 0x14]
add ebx, dword [edx + edi*4]
push eax
lea eax, [esp + 0x14]
push eax
push ebx
call fcn.007430d0
add esp, 0xc
mov eax, 1
add esp, 0x1f4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor eax, eax
add esp, 0x1f4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
xor eax, eax
mov byte [eax + ecx], 0x20
inc eax
cmp eax, ebx
jb 0x525561
jmp 0x5252b8
mov eax, dword [esi + 0x20]
movsx eax, byte [eax + edi]
cmp eax, 0x4e
je 0x5255c6
cmp eax, 0x46
je 0x5255c6
cmp eax, 0x44
jne 0x52559b
mov eax, dword [esi + 0x14]
add ebx, dword [eax + edi*4]
mov edx, dword [esi + 0x18]
push dword [edx + edi*4]
push 0x30
push ebx
call fcn.00766740
jmp 0x5255da
mov edx, dword [esi + 0x14]
mov ecx, dword [esi + 0x18]
cmp eax, 0x4c
jne 0x5255b6
add ebx, dword [edx + edi*4]
push dword [ecx + edi*4]
push 0x3f
push ebx
call fcn.00766740
jmp 0x5255da
add ebx, dword [edx + edi*4]
push dword [ecx + edi*4]
push 0
push ebx
call fcn.00766740
jmp 0x5255da
mov eax, dword [esi + 0x14]
add ebx, dword [eax + edi*4]
mov edx, dword [esi + 0x18]
push dword [edx + edi*4]
push 0x2a
push ebx
call fcn.00766740
add esp, 0xc
mov eax, 1
add esp, 0x1f4
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret