Function at 0x52f3e0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0x90
push ebp
mov ebp, dword [esp + 0xa4]
cmp ebp, 0xa
jae 0x52f400
mov eax, 0xffffffec
pop ebp
add esp, 0x90
ret
mov eax, dword [esp + 0x9c]
cmp eax, 6
jb 0x52f3f3
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0x98]
add eax, edx
mov dword [esp + 0x8c], eax
push ebx
lea eax, [ecx + 4]
mov dword [esp + 8], 1
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xa4]
push esi
push edi
mov edi, ebp
movzx ebx, word [eax + 2]
movzx esi, word [eax]
mov dword [esp + 0x2c], ebx
movzx ebx, word [eax + 4]
add eax, 6
mov dword [esp + 0x30], eax
sub edi, ebx
sub edi, dword [esp + 0x2c]
add eax, esi
mov dword [esp + 0x18], eax
sub edi, esi
add eax, dword [esp + 0x2c]
sub edi, 6
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xa8]
add eax, 3
mov dword [esp + 0x38], ebx
shr eax, 2
add edx, eax
mov dword [esp + 0x9c], esi
mov dword [esp + 0x94], edx
mov dword [esp + 0x20], edx
lea ebx, [edx + eax]
add eax, ebx
mov dword [esp + 0x1c], ebx
mov esi, eax
mov dword [esp + 0x90], eax
mov eax, dword [ecx]
shr eax, 0x10
mov dword [esp + 0x24], ebx
movzx ebx, al
mov dword [esp + 0x28], esi
mov dword [esp + 0x8c], ebx
cmp edi, ebp
ja 0x52f899
mov eax, dword [esp + 0x98]
cmp esi, eax
ja 0x52f899
push dword [esp + 0x9c]
lea eax, [esp + 0x68]
push dword [esp + 0x34]
push eax
call fcn.0052ea70
add esp, 0xc
cmp eax, 0xffffff88
ja 0x530480
push dword [esp + 0x2c]
lea eax, [esp + 0x54]
push dword [esp + 0x1c]
push eax
call fcn.0052ea70
add esp, 0xc
cmp eax, 0xffffff88
ja 0x530480
mov ebp, dword [esp + 0x38]
lea eax, [esp + 0x3c]
push ebp
push dword [esp + 0x38]
push eax
call fcn.0052ea70
add esp, 0xc
cmp eax, 0xffffff88
ja 0x530480
mov eax, dword [esp + 0x34]
add eax, ebp
push edi
push eax
lea eax, [esp + 0x80]
push eax
call fcn.0052ea70
add esp, 0xc
cmp eax, 0xffffff88
ja 0x530480
mov edx, dword [esp + 0x98]
mov ecx, esi
mov eax, edx
sub eax, ecx
cmp eax, 4
jb 0x52f84b
lea eax, [edx - 3]
cmp ecx, eax
jae 0x52f84b
mov edx, dword [esp + 0x68]
neg ebx
mov eax, dword [esp + 0x7c]
and ebx, 0x1f
mov ebp, dword [esp + 0x40]
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x54]
mov dword [esp + 0x18], edx
mov dword [esp + 0x30], eax
jmp 0x52f5a8
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x2c]
mov eax, dword [esp + 0x14]
mov ecx, edx
mov edx, dword [esp + 0x64]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x28]
shr edx, cl
mov ecx, dword [esp + 0xa4]
movzx edi, byte [eax + edx*2]
movzx eax, byte [eax + edx*2 + 1]
mov byte [ecx], al
inc ecx
mov edx, dword [esp + 0x50]
mov dword [esp + 0xa4], ecx
mov ecx, ebx
and ecx, 0x1f
add edi, dword [esp + 0x18]
shl edx, cl
mov ecx, dword [esp + 0x28]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2]
add ebx, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x3c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x20], ecx
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x28]
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2]
add ebp, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x78]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x14]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x30]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x28]
shr edx, cl
mov ecx, dword [esp + 0x30]
movzx eax, byte [eax + edx*2]
add ecx, eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x38], ecx
mov ecx, edi
and ecx, 0x1f
movzx eax, byte [eax + edx*2 + 1]
mov edx, dword [esp + 0x14]
mov byte [esi], al
mov eax, dword [esp + 0x64]
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
movzx ecx, byte [edx + eax*2]
movzx eax, byte [edx + eax*2 + 1]
add ecx, edi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x68], ecx
mov ecx, dword [esp + 0xa4]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x50]
mov dword [esp + 0xa4], ecx
mov ecx, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
movzx edi, byte [edx + eax*2]
add edi, ebx
mov dword [esp + 0x2c], edi
movzx eax, byte [edx + eax*2 + 1]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x54], edi
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x20], ecx
mov ecx, ebp
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x24]
movzx ebx, byte [edx + eax*2]
movzx eax, byte [edx + eax*2 + 1]
add ebx, ebp
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x78]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x38]
and ecx, 0x1f
mov dword [esp + 0x34], ebx
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, edx
mov dword [esp + 0x40], ebx
movzx ebp, byte [ecx + eax*2]
movzx eax, byte [ecx + eax*2 + 1]
add ebp, dword [esp + 0x38]
mov ecx, dword [esp + 0x6c]
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x30], ebp
mov dword [esp + 0x7c], ebp
cmp ecx, dword [esp + 0x74]
jae 0x52f739
mov ecx, 3
jmp 0x52f75b
mov edx, dword [esp + 0x18]
mov eax, edx
shr eax, 3
and edx, 7
sub ecx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0x6c], ecx
mov dword [esp + 0x68], edx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x64], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x58]
cmove eax, dword [esp + 0x10]
mov dword [esp + 0x38], eax
cmp ecx, dword [esp + 0x60]
jae 0x52f779
mov ecx, 3
jmp 0x52f797
mov eax, edi
and edi, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x2c], edi
mov dword [esp + 0x58], ecx
mov dword [esp + 0x54], edi
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x50], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x44]
sete al
and eax, dword [esp + 0x38]
mov dword [esp + 0x38], eax
cmp ecx, dword [esp + 0x4c]
jae 0x52f7b7
mov ecx, 3
jmp 0x52f7d5
mov eax, ebx
and ebx, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x34], ebx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], ebx
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x3c], eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x80]
cmove eax, dword [esp + 0x38]
mov dword [esp + 0x10], eax
cmp ecx, dword [esp + 0x88]
jae 0x52f7f9
mov ecx, 3
jmp 0x52f81a
mov eax, ebp
and ebp, 7
shr eax, 3
sub ecx, eax
mov dword [esp + 0x30], ebp
mov dword [esp + 0x80], ecx
mov dword [esp + 0x7c], ebp
mov eax, dword [ecx]
xor ecx, ecx
mov dword [esp + 0x78], eax
mov edx, dword [esp + 0x18]
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x10]
sete al
and ecx, eax
mov eax, dword [esp + 0x98]
add eax, 0xfffffffd
mov dword [esp + 0x10], ecx
cmp esi, eax
sbb eax, eax
test ecx, eax
jne 0x52f5a0
mov dword [esp + 0x28], esi
jmp 0x52f86b
mov edx, dword [esp + 0x68]
mov edi, dword [esp + 0x54]
mov ebx, dword [esp + 0x40]
mov ebp, dword [esp + 0x7c]
mov dword [esp + 0x18], edx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], ebp
mov ecx, dword [esp + 0xa4]
cmp ecx, dword [esp + 0x94]
ja 0x52f899
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x20], eax
ja 0x52f899
mov eax, dword [esp + 0x90]
cmp dword [esp + 0x24], eax
mov eax, dword [esp + 0x94]
jbe 0x52f8a9
pop edi
pop esi
pop ebx
mov eax, 0xffffffec
pop ebp
add esp, 0x90
ret
sub eax, ecx
cmp eax, 3
mov eax, dword [esp + 0x70]
jle 0x52f9f0
mov ebx, dword [esp + 0x94]
add ebx, 0xfffffffd
mov dword [esp + 0x38], ebx
cmp edx, 0x20
jbe 0x52f8e6
mov edi, dword [esp + 0x64]
mov ecx, 0x5a1370
mov dword [esp + 0x6c], ecx
mov ebx, 3
mov ecx, dword [esp + 0xa4]
jmp 0x52f95e
mov ebx, dword [esp + 0x6c]
cmp ebx, dword [esp + 0x74]
jb 0x52f904
mov eax, edx
and edx, 7
shr eax, 3
sub ebx, eax
mov dword [esp + 0x6c], ebx
mov edi, dword [ebx]
xor ebx, ebx
jmp 0x52f952
cmp ebx, eax
jne 0x52f91c
mov edi, dword [esp + 0x64]
cmp edx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x52f95e
mov edi, edx
mov dword [esp + 0x10], 0
shr edi, 3
mov eax, ebx
sub eax, edi
cmp eax, dword [esp + 0x70]
jae 0x52f941
mov edi, ebx
mov dword [esp + 0x10], 1
sub edi, dword [esp + 0x70]
sub ebx, edi
imul eax, edi, 0xfffffff8
mov dword [esp + 0x6c], ebx
mov edi, dword [ebx]
mov ebx, dword [esp + 0x10]
add edx, eax
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], edx
mov dword [esp + 0x18], edx
cmp ecx, dword [esp + 0x38]
sbb ecx, ecx
xor eax, eax
neg ecx
test ebx, ebx
sete al
test eax, ecx
je 0x52fa54
mov ebx, dword [esp + 0x8c]
mov ecx, edx
mov eax, dword [esp + 0x14]
and ecx, 0x1f
neg ebx
mov edx, edi
shl edx, cl
and ebx, 0x1f
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0xa4]
movzx edi, byte [eax + edx*2]
movzx eax, byte [eax + edx*2 + 1]
add edi, dword [esp + 0x18]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x64]
mov dword [esp + 0xa4], ecx
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
movzx edx, byte [ecx + eax*2]
movzx eax, byte [ecx + eax*2 + 1]
add edx, edi
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x18], edx
mov dword [esp + 0x68], edx
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x70]
mov dword [esp + 0xa4], ecx
jmp 0x52f8c6
cmp edx, 0x20
jbe 0x52fa00
mov ecx, 0x5a1370
mov dword [esp + 0x6c], ecx
jmp 0x52fa58
mov ecx, dword [esp + 0x6c]
cmp ecx, dword [esp + 0x74]
jb 0x52fa16
mov eax, edx
shr eax, 3
sub ecx, eax
and edx, 7
jmp 0x52fa42
cmp ecx, eax
je 0x52fa58
mov eax, edx
shr eax, 3
mov dword [esp + 0x10], eax
mov eax, ecx
sub eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x70]
jae 0x52fa37
mov eax, ecx
sub eax, dword [esp + 0x70]
jmp 0x52fa3b
mov eax, dword [esp + 0x10]
sub ecx, eax
imul eax, eax, 0xfffffff8
add edx, eax
mov eax, dword [ecx]
mov dword [esp + 0x64], eax
mov dword [esp + 0x68], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x6c], ecx
mov eax, dword [esp + 0x70]
mov ebp, dword [esp + 0x6c]
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0xa4]
mov esi, dword [esp + 0x14]
nop dword [eax + eax]
cmp edx, 0x20
jbe 0x52fa84
mov ebp, 0x5a1370
mov dword [esp + 0x10], 3
jmp 0x52fafd
cmp ebp, dword [esp + 0x74]
jb 0x52fa9e
mov eax, edx
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and edx, 7
jmp 0x52faee
cmp ebp, eax
jne 0x52fac2
mov eax, dword [esp + 0x8c]
cmp edx, 0x20
jae 0x52fab8
mov dword [esp + 0x10], 1
jmp 0x52fb08
mov dword [esp + 0x10], 2
jmp 0x52fb08
mov edi, dword [esp + 0x70]
mov ecx, edx
shr ecx, 3
mov eax, ebp
sub eax, ecx
mov dword [esp + 0x10], 0
cmp eax, edi
jae 0x52fae7
mov ecx, ebp
mov dword [esp + 0x10], 1
sub ecx, edi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
add edx, eax
mov edi, dword [ebp]
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], edx
mov dword [esp + 0x18], edx
mov eax, dword [esp + 0x8c]
mov dword [esp + 0x6c], ebp
neg eax
cmp ebx, dword [esp + 0x94]
mov dword [esp + 0x9c], eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x52fb64
mov ecx, edx
mov edx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x8c]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [esi + edx*2]
add ecx, eax
mov al, byte [esi + edx*2 + 1]
mov byte [ebx], al
mov edx, ecx
mov eax, dword [esp + 0x70]
inc ebx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x68], ecx
jmp 0x52fa70
mov edi, dword [esp + 0x2c]
mov dword [esp + 0xa4], ebx
cmp ebx, dword [esp + 0x94]
jae 0x52fbc6
mov edi, dword [esp + 0x9c]
mov ebx, dword [esp + 0x64]
and edi, 0x1f
mov ebp, dword [esp + 0xa4]
nop dword [eax]
mov ecx, edx
mov edx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x18]
movzx eax, byte [esi + edx*2]
add ecx, eax
mov al, byte [esi + edx*2 + 1]
mov byte [ebp], al
mov edx, ecx
inc ebp
mov dword [esp + 0x18], ecx
mov dword [esp + 0x68], ecx
cmp ebp, dword [esp + 0x94]
jb 0x52fb90
mov edi, dword [esp + 0x2c]
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
sub ecx, edx
mov eax, dword [esp + 0x5c]
cmp ecx, 3
jle 0x52fcf7
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x20]
cmp edi, 0x20
jbe 0x52fbfe
mov ecx, 0x5a1370
mov ebx, 3
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x20]
jmp 0x52fc6c
mov edx, dword [esp + 0x58]
cmp edx, dword [esp + 0x60]
jb 0x52fc16
mov eax, edi
and edi, 7
shr eax, 3
sub edx, eax
xor ebx, ebx
jmp 0x52fc5e
cmp edx, eax
jne 0x52fc2e
mov edx, dword [esp + 0x50]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x52fc6c
mov ebx, edi
mov dword [esp + 0x10], 0
shr ebx, 3
mov eax, edx
sub eax, ebx
cmp eax, dword [esp + 0x5c]
jae 0x52fc53
mov ebx, edx
mov dword [esp + 0x10], 1
sub ebx, dword [esp + 0x5c]
imul eax, ebx, 0xfffffff8
sub edx, ebx
mov ebx, dword [esp + 0x10]
add edi, eax
mov dword [esp + 0x58], edx
mov edx, dword [edx]
mov dword [esp + 0x50], edx
mov dword [esp + 0x54], edi
mov eax, dword [esp + 0x1c]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test ebx, ebx
sete al
test eax, ecx
je 0x52fd67
mov ebx, dword [esp + 0x8c]
mov ecx, edi
and ecx, 0x1f
neg ebx
shl edx, cl
and ebx, 0x1f
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2]
add edi, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x50]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x20], ecx
mov eax, edx
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
movzx ebx, byte [ecx + eax*2]
movzx eax, byte [ecx + eax*2 + 1]
add ebx, edi
mov ecx, dword [esp + 0x20]
mov edi, ebx
mov dword [esp + 0x2c], ebx
mov dword [esp + 0x54], edi
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x20], ecx
jmp 0x52fbe5
cmp edi, 0x20
jbe 0x52fd07
mov ecx, 0x5a1370
mov dword [esp + 0x58], ecx
jmp 0x52fd6f
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x60]
jb 0x52fd2b
mov eax, edi
shr eax, 3
sub ecx, eax
and edi, 7
mov dword [esp + 0x58], ecx
mov dword [esp + 0x54], edi
mov eax, dword [ecx]
mov dword [esp + 0x50], eax
jmp 0x52fd6b
cmp ecx, eax
je 0x52fd6f
mov eax, edi
shr eax, 3
mov dword [esp + 0x10], eax
mov eax, ecx
sub eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x5c]
jae 0x52fd4c
mov eax, ecx
sub eax, dword [esp + 0x5c]
jmp 0x52fd50
mov eax, dword [esp + 0x10]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x58], ecx
add edi, eax
mov eax, dword [ecx]
mov dword [esp + 0x54], edi
mov dword [esp + 0x50], eax
jmp 0x52fd6b
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x5c]
mov ebp, dword [esp + 0x58]
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x9c]
nop
cmp edi, 0x20
jbe 0x52fd94
mov ebp, 0x5a1370
mov dword [esp + 0x10], 3
jmp 0x52fe04
cmp ebp, dword [esp + 0x60]
jb 0x52fdae
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and edi, 7
jmp 0x52fdf9
cmp ebp, eax
jne 0x52fdcd
mov eax, esi
cmp edi, 0x20
jae 0x52fdc3
mov dword [esp + 0x10], 1
jmp 0x52fe0a
mov dword [esp + 0x10], 2
jmp 0x52fe0a
mov ebx, dword [esp + 0x5c]
mov ecx, edi
shr ecx, 3
mov eax, ebp
sub eax, ecx
mov dword [esp + 0x10], 0
cmp eax, ebx
jae 0x52fdf2
mov ecx, ebp
mov dword [esp + 0x10], 1
sub ecx, ebx
imul eax, ecx, 0xfffffff8
sub ebp, ecx
add edi, eax
mov ebx, dword [ebp]
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], edi
mov dword [esp + 0x58], ebp
mov eax, esi
and eax, 0x1f
cmp edx, dword [esp + 0x1c]
mov dword [esp + 0x2c], eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x52fe5c
mov ecx, edi
mov edx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, esi
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2]
add edi, eax
mov al, byte [ecx + edx*2 + 1]
mov edx, dword [esp + 0x20]
mov dword [esp + 0x54], edi
mov byte [edx], al
inc edx
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x20], edx
jmp 0x52fd80
mov ebx, dword [esp + 0x34]
cmp edx, dword [esp + 0x1c]
jae 0x52fe9c
mov ebp, dword [esp + 0x50]
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x14]
mov ecx, edi
mov edx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x2c]
shr edx, cl
movzx eax, byte [ebx + edx*2]
add edi, eax
mov al, byte [ebx + edx*2 + 1]
mov byte [esi], al
inc esi
cmp esi, dword [esp + 0x1c]
jb 0x52fe72
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x54], edi
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x24]
sub ecx, edx
mov eax, dword [esp + 0x48]
cmp ecx, 3
jle 0x52ffdb
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x24]
nop
cmp ebx, 0x20
jbe 0x52fed9
mov ecx, 0x5a1370
mov edi, 3
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x24]
jmp 0x52ff4b
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x4c]
jb 0x52fef1
mov eax, ebx
and ebx, 7
shr eax, 3
sub edx, eax
xor edi, edi
jmp 0x52ff39
cmp edx, eax
jne 0x52ff09
mov edx, dword [esp + 0x3c]
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x1c], eax
mov edi, eax
jmp 0x52ff4b
mov edi, ebx
mov dword [esp + 0x1c], 0
shr edi, 3
mov eax, edx
sub eax, edi
cmp eax, dword [esp + 0x48]
jae 0x52ff2e
mov edi, edx
mov dword [esp + 0x1c], 1
sub edi, dword [esp + 0x48]
imul eax, edi, 0xfffffff8
sub edx, edi
mov edi, dword [esp + 0x1c]
add ebx, eax
mov dword [esp + 0x44], edx
mov edx, dword [edx]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x34], ebx
mov eax, dword [esp + 0x90]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test edi, edi
sete al
test eax, ecx
je 0x530051
mov edi, dword [esp + 0x34]
mov ecx, edi
mov ebx, dword [esp + 0x8c]
and ecx, 0x1f
shl edx, cl
neg ebx
and ebx, 0x1f
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2]
add edi, eax
movzx eax, byte [ecx + edx*2 + 1]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x3c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x24], ecx
mov eax, edx
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x14]
movzx ebx, byte [ecx + eax*2]
movzx eax, byte [ecx + eax*2 + 1]
add ebx, edi
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x40], ebx
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0x48]
mov dword [esp + 0x24], ecx
jmp 0x52fec0
cmp ebx, 0x20
jbe 0x52ffeb
mov ecx, 0x5a1370
mov dword [esp + 0x44], ecx
jmp 0x530059
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x4c]
jb 0x530013
mov eax, ebx
shr eax, 3
sub ecx, eax
mov eax, dword [esp + 0x48]
and ebx, 7
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], ebx
mov edi, dword [ecx]
mov dword [esp + 0x3c], edi
jmp 0x53005d
cmp ecx, eax
je 0x530059
mov edi, ebx
mov eax, ecx
shr edi, 3
sub eax, edi
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x48]
cmp eax, edi
jae 0x530032
mov eax, ecx
sub eax, edi
jmp 0x530036
mov eax, dword [esp + 0x38]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x44], ecx
mov edi, dword [ecx]
add ebx, eax
mov dword [esp + 0x3c], edi
mov eax, dword [esp + 0x48]
mov dword [esp + 0x40], ebx
jmp 0x53005d
mov edx, dword [esp + 0x24]
mov eax, dword [esp + 0x48]
mov edi, dword [esp + 0x3c]
mov ebp, dword [esp + 0x44]
mov esi, dword [esp + 0x2c]
cmp ebx, 0x20
jbe 0x530079
mov ebp, 0x5a1370
mov dword [esp + 0x1c], 3
jmp 0x5300dc
cmp ebp, dword [esp + 0x4c]
jb 0x530093
mov eax, ebx
mov dword [esp + 0x1c], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x5300d1
cmp ebp, eax
jne 0x5300a5
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x1c], eax
jmp 0x5300e0
mov edi, dword [esp + 0x48]
mov ecx, ebx
shr ecx, 3
mov eax, ebp
sub eax, ecx
mov dword [esp + 0x1c], 0
cmp eax, edi
jae 0x5300ca
mov ecx, ebp
mov dword [esp + 0x1c], 1
sub ecx, edi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
add ebx, eax
mov edi, dword [ebp]
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebp
cmp edx, dword [esp + 0x90]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x1c], eax
sete al
test eax, ecx
je 0x53012b
mov ecx, ebx
mov edx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, esi
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx eax, byte [ecx + edx*2]
add ebx, eax
mov al, byte [ecx + edx*2 + 1]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x40], ebx
mov byte [edx], al
inc edx
mov eax, dword [esp + 0x48]
mov dword [esp + 0x24], edx
jmp 0x530065
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x30]
cmp edx, dword [esp + 0x90]
jae 0x530176
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x14]
mov ecx, ebx
mov edx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x2c]
shr edx, cl
movzx eax, byte [esi + edx*2]
add ebx, eax
mov al, byte [esi + edx*2 + 1]
mov byte [ebp], al
inc ebp
cmp ebp, dword [esp + 0x90]
jb 0x530144
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x30]
mov dword [esp + 0x40], ebx
mov ecx, dword [esp + 0x98]
mov eax, ecx
mov ebx, dword [esp + 0x84]
sub eax, esi
cmp eax, 3
jle 0x530299
mov edx, dword [esp + 0x78]
add ecx, 0xfffffffd
mov dword [esp + 0x9c], ecx
nop
cmp ebp, 0x20
jbe 0x5301b8
mov eax, 0x5a1370
mov edi, 3
mov dword [esp + 0x80], eax
jmp 0x53021f
mov edx, dword [esp + 0x80]
cmp edx, dword [esp + 0x88]
jb 0x5301d6
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
xor edi, edi
jmp 0x53020e
cmp edx, ebx
jne 0x5301e8
mov edx, dword [esp + 0x78]
cmp ebp, 0x20
sbb edi, edi
add edi, 2
jmp 0x53021f
mov ecx, ebp
mov eax, edx
shr ecx, 3
xor edi, edi
sub eax, ecx
cmp eax, ebx
jae 0x530200
mov ecx, edx
mov edi, 1
sub ecx, ebx
imul eax, ecx, 0xfffffff8
sub edx, ecx
mov ecx, dword [esp + 0x9c]
add ebp, eax
mov dword [esp + 0x80], edx
mov edx, dword [edx]
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ebp
cmp esi, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
test edi, edi
sete al
test eax, ecx
je 0x530318
mov ebx, dword [esp + 0x8c]
mov ecx, ebp
and ecx, 0x1f
neg ebx
shl edx, cl
and ebx, 0x1f
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x14]
movzx edi, byte [ecx + edx*2]
movzx eax, byte [ecx + edx*2 + 1]
add edi, ebp
mov edx, dword [esp + 0x78]
mov ecx, edi
mov byte [esi], al
and ecx, 0x1f
mov eax, edx
shl eax, cl
mov ecx, ebx
mov ebx, dword [esp + 0x84]
shr eax, cl
mov ecx, dword [esp + 0x14]
movzx ebp, byte [ecx + eax*2]
movzx eax, byte [ecx + eax*2 + 1]
add ebp, edi
mov ecx, dword [esp + 0x9c]
mov byte [esi + 1], al
add esi, 2
mov dword [esp + 0x7c], ebp
jmp 0x5301a0
mov eax, dword [esp + 0x88]
cmp ebp, 0x20
jbe 0x5302b3
mov edx, 0x5a1370
mov dword [esp + 0x80], edx
jmp 0x530326
mov edx, dword [esp + 0x80]
cmp edx, eax
jb 0x5302e2
mov eax, ebp
shr eax, 3
sub edx, eax
mov eax, dword [esp + 0x88]
and ebp, 7
mov dword [esp + 0x80], edx
mov dword [esp + 0x7c], ebp
mov ebx, dword [edx]
mov dword [esp + 0x78], ebx
jmp 0x53032a
cmp edx, ebx
je 0x530326
mov ecx, ebp
mov eax, edx
shr ecx, 3
sub eax, ecx
cmp eax, ebx
jae 0x5302f7
mov ecx, edx
sub ecx, ebx
imul eax, ecx, 0xfffffff8
sub edx, ecx
mov dword [esp + 0x80], edx
mov ebx, dword [edx]
add ebp, eax
mov dword [esp + 0x78], ebx
mov eax, dword [esp + 0x88]
mov dword [esp + 0x7c], ebp
jmp 0x53032a
mov edx, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x14]
nop
cmp ebp, 0x20
jbe 0x53034b
mov eax, 0x5a1370
mov edx, 3
mov dword [esp + 0x80], eax
jmp 0x5303c3
cmp edx, eax
jb 0x530366
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
mov dword [esp + 0x80], edx
mov ebx, dword [edx]
xor edx, edx
jmp 0x5303bb
cmp edx, dword [esp + 0x84]
jne 0x53037f
cmp ebp, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x1c], eax
mov edx, eax
jmp 0x5303c3
mov ebx, dword [esp + 0x84]
mov ecx, ebp
shr ecx, 3
mov eax, edx
sub eax, ecx
mov dword [esp + 0x1c], 0
cmp eax, ebx
jae 0x5303a7
mov ecx, edx
mov dword [esp + 0x1c], 1
sub ecx, ebx
sub edx, ecx
imul eax, ecx, 0xfffffff8
mov dword [esp + 0x80], edx
mov ebx, dword [edx]
mov edx, dword [esp + 0x1c]
add ebp, eax
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], ebp
cmp esi, dword [esp + 0x98]
sbb ecx, ecx
xor eax, eax
neg ecx
test edx, edx
sete al
test eax, ecx
je 0x53040c
mov ecx, ebp
mov edx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x2c]
shr edx, cl
movzx eax, byte [edi + edx*2]
add ebp, eax
mov al, byte [edi + edx*2 + 1]
mov edx, dword [esp + 0x80]
mov byte [esi], al
inc esi
mov eax, dword [esp + 0x88]
mov dword [esp + 0x7c], ebp
jmp 0x530330
cmp esi, dword [esp + 0x98]
jae 0x53043e
mov ecx, ebp
mov edx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x2c]
shr edx, cl
movzx eax, byte [edi + edx*2]
add ebp, eax
mov al, byte [edi + edx*2 + 1]
mov byte [esi], al
inc esi
cmp esi, dword [esp + 0x98]
jb 0x530415
mov dword [esp + 0x7c], ebp
lea eax, [esp + 0x78]
push eax
call fcn.0052ea50
mov edx, eax
lea eax, [esp + 0x40]
push eax
call fcn.0052ea50
and edx, eax
lea eax, [esp + 0x58]
push eax
call fcn.0052ea50
and edx, eax
lea eax, [esp + 0x70]
push eax
call fcn.0052ea50
add esp, 0x10
mov ecx, 0xffffffec
test eax, edx
mov eax, dword [esp + 0xa8]
cmove eax, ecx
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x90
ret