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

Disassembly:
test dword [0x87ed4c], 0xfffff000
jne 0x52aec0
test dword [0x87ed4c], 0xffffffff
jne 0x52b0f0
call fcn.007663a0
jmp fcn.0052ae90
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x54
mov edi, eax
cmp dword [edi + 0x34], 0
je 0x52afa3
mov ecx, dword [edi + 0xc]
xor eax, eax
mov dword [edi + 0x34], eax
pxor xmm0, xmm0
pshufd xmm1, xmm0, 0
mov edx, ecx
and edx, 0x800000ff
movdqa xmmword [esp + 0x10], xmm1
movdqa xmmword [esp + 0x20], xmm1
mov byte [esp + 0x10], 3
jge 0x52af0e
sub edx, 1
or edx, 0xffffff00
inc edx
mov byte [esp + 0x18], dl
mov edx, ecx
sar edx, 7
shr edx, 0x18
add edx, ecx
mov ecx, dword [edi + 8]
shr edx, 8
mov byte [esp + 0x19], dl
mov edx, ecx
and edx, 0x800000ff
jge 0x52af3a
sub edx, 1
or edx, 0xffffff00
inc edx
mov byte [esp + 0x1a], dl
mov edx, ecx
sar edx, 7
shr edx, 0x18
add edx, ecx
shr edx, 8
mov byte [esp + 0x1b], dl
push eax
push eax
push dword [edi]
call fcn.0074327b
lea eax, [esp + 0x1c]
push dword [edi]
push 1
push 0x20
push eax
call fcn.00742cfc
push dword [edi]
push dword [edi + 0x10]
push 0x20
push dword [edi + 0x24]
call fcn.00742cfc
add esp, 0x2c
mov eax, dword [edi + 0x10]
shl eax, 5
add eax, 0x20
cmp eax, dword [edi + 0xc]
jge 0x52afa3
mov byte [esp + 0x50], 0xd
lea edx, [esp + 0x50]
mov eax, 1
push dword [edi]
push eax
push eax
push edx
call fcn.00742cfc
add esp, 0x10
mov eax, edi
call fcn.005255f0
cmp dword [edi + 0x38], 0
je 0x52b072
xor esi, esi
push esi
push esi
push dword [edi]
call fcn.0074327b
lea ebx, [esp + 0x3c]
push dword [edi]
push 1
push 0x20
push ebx
call fcn.0074301a
mov edx, dword [edi + 4]
mov byte [esp + 0x4d], 0x5f
mov eax, edx
and eax, 0x800000ff
mov byte [esp + 0x4e], 7
mov byte [esp + 0x4f], 0x1a
jge 0x52aff3
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x50], al
mov eax, edx
sar eax, 7
shr eax, 0x18
add eax, edx
sar eax, 8
and eax, 0x800000ff
jge 0x52b014
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x51], al
mov eax, edx
sar eax, 0xf
shr eax, 0x10
add eax, edx
sar eax, 0x10
and eax, 0x800000ff
jge 0x52b035
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x52], al
mov eax, edx
sar eax, 0x17
shr eax, 8
add eax, edx
sar eax, 0x18
and eax, 0x800000ff
jge 0x52b056
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x53], al
push esi
push esi
push dword [edi]
call fcn.0074327b
push dword [edi]
push 1
push 0x20
push ebx
call fcn.00742cfc
add esp, 0x38
push dword [edi]
call fcn.00742b21
pop ecx
mov eax, dword [edi + 0x14]
test eax, eax
je 0x52b0a2
push eax
call fcn.00743035
push dword [edi + 0x18]
call fcn.00743035
push dword [edi + 0x1c]
call fcn.00743035
push dword [edi + 0x20]
call fcn.00743035
add esp, 0x10
push dword [edi + 0x24]
call fcn.00743035
push dword [edi + 0x30]
call fcn.00743035
push edi
call fcn.00743035
add esp, 0xc
mov eax, dword [0x84f7b0]
test eax, eax
je 0x52b0d7
push eax
call fcn.00743035
pop ecx
xor eax, eax
mov dword [0x84f7b0], eax
mov dword [0x84f7b4], eax
add esp, 0x54
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
sub esp, 0x54
mov ebx, eax
cmp dword [ebx + 0x34], 0
je 0x52b1cf
mov dword [ebx + 0x34], 0
xor edx, edx
xor eax, eax
mov byte [esp + edx + 0x31], 0
inc edx
cmp edx, 0x20
jl 0x52b113
mov byte [esp + 0x31], 3
mov ecx, dword [ebx + 0xc]
mov edx, ecx
and edx, 0x800000ff
jge 0x52b13a
sub edx, 1
or edx, 0xffffff00
inc edx
mov byte [esp + 0x39], dl
mov edx, ecx
sar edx, 7
shr edx, 0x18
add edx, ecx
shr edx, 8
mov byte [esp + 0x3a], dl
mov ecx, dword [ebx + 8]
mov edx, ecx
and edx, 0x800000ff
jge 0x52b166
sub edx, 1
or edx, 0xffffff00
inc edx
mov byte [esp + 0x3b], dl
mov edx, ecx
sar edx, 7
shr edx, 0x18
add edx, ecx
shr edx, 8
mov byte [esp + 0x3c], dl
push eax
push eax
push dword [ebx]
call fcn.0074327b
lea eax, [esp + 0x3d]
push dword [ebx]
push 1
push 0x20
push eax
call fcn.00742cfc
push dword [ebx]
push dword [ebx + 0x10]
push 0x20
push dword [ebx + 0x24]
call fcn.00742cfc
add esp, 0x2c
mov eax, dword [ebx + 0x10]
shl eax, 5
add eax, 0x20
cmp eax, dword [ebx + 0xc]
jge 0x52b1cf
mov byte [esp + 0x30], 0xd
lea edx, [esp + 0x30]
mov eax, 1
push dword [ebx]
push eax
push eax
push edx
call fcn.00742cfc
add esp, 0x10
mov eax, ebx
call fcn.005255f0
cmp dword [ebx + 0x38], 0
je 0x52b29e
xor edi, edi
push edi
push edi
push dword [ebx]
call fcn.0074327b
lea esi, [esp + 0x1c]
push dword [ebx]
push 1
push 0x20
push esi
call fcn.0074301a
mov byte [esp + 0x2d], 0x5f
mov byte [esp + 0x2e], 7
mov byte [esp + 0x2f], 0x1a
mov edx, dword [ebx + 4]
mov eax, edx
and eax, 0x800000ff
jge 0x52b21f
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x30], al
mov eax, edx
sar eax, 7
shr eax, 0x18
add eax, edx
sar eax, 8
and eax, 0x800000ff
jge 0x52b240
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x31], al
mov eax, edx
sar eax, 0xf
shr eax, 0x10
add eax, edx
sar eax, 0x10
and eax, 0x800000ff
jge 0x52b261
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x32], al
mov eax, edx
sar eax, 0x17
shr eax, 8
add eax, edx
sar eax, 0x18
and eax, 0x800000ff
jge 0x52b282
sub eax, 1
or eax, 0xffffff00
inc eax
mov byte [esp + 0x33], al
push edi
push edi
push dword [ebx]
call fcn.0074327b
push dword [ebx]
push 1
push 0x20
push esi
call fcn.00742cfc
add esp, 0x38
push dword [ebx]
call fcn.00742b21
pop ecx
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x52b2ce
push eax
call fcn.00743035
push dword [ebx + 0x18]
call fcn.00743035
push dword [ebx + 0x1c]
call fcn.00743035
push dword [ebx + 0x20]
call fcn.00743035
add esp, 0x10
push dword [ebx + 0x24]
call fcn.00743035
push dword [ebx + 0x30]
call fcn.00743035
push ebx
call fcn.00743035
add esp, 0xc
mov eax, dword [0x84f7b0]
test eax, eax
je 0x52b303
push eax
call fcn.00743035
pop ecx
xor eax, eax
mov dword [0x84f7b0], eax
mov dword [0x84f7b4], eax
add esp, 0x54
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret