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

Disassembly:
sub esp, 0x90
push ebp
mov ebp, dword [esp + 0xa4]
cmp ebp, 0xa
jae 0x5303b0
mov eax, 0xffffffec
pop ebp
add esp, 0x90
ret
mov eax, dword [esp + 0x9c]
cmp eax, 6
jb 0x5303a3
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 0x530849
mov eax, dword [esp + 0x98]
cmp esi, eax
ja 0x530849
push dword [esp + 0x9c]
lea eax, [esp + 0x68]
push dword [esp + 0x34]
push eax
call fcn.0052fa20
add esp, 0xc
cmp eax, 0xffffff88
ja 0x531430
push dword [esp + 0x2c]
lea eax, [esp + 0x54]
push dword [esp + 0x1c]
push eax
call fcn.0052fa20
add esp, 0xc
cmp eax, 0xffffff88
ja 0x531430
mov ebp, dword [esp + 0x38]
lea eax, [esp + 0x3c]
push ebp
push dword [esp + 0x38]
push eax
call fcn.0052fa20
add esp, 0xc
cmp eax, 0xffffff88
ja 0x531430
mov eax, dword [esp + 0x34]
add eax, ebp
push edi
push eax
lea eax, [esp + 0x80]
push eax
call fcn.0052fa20
add esp, 0xc
cmp eax, 0xffffff88
ja 0x531430
mov edx, dword [esp + 0x98]
mov ecx, esi
mov eax, edx
sub eax, ecx
cmp eax, 4
jb 0x5307fb
lea eax, [edx - 3]
cmp ecx, eax
jae 0x5307fb
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 0x530558
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 0x5306e9
mov ecx, 3
jmp 0x53070b
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 0x530729
mov ecx, 3
jmp 0x530747
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 0x530767
mov ecx, 3
jmp 0x530785
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 0x5307a9
mov ecx, 3
jmp 0x5307ca
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 0x530550
mov dword [esp + 0x28], esi
jmp 0x53081b
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 0x530849
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x20], eax
ja 0x530849
mov eax, dword [esp + 0x90]
cmp dword [esp + 0x24], eax
mov eax, dword [esp + 0x94]
jbe 0x530859
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 0x5309a0
mov ebx, dword [esp + 0x94]
add ebx, 0xfffffffd
mov dword [esp + 0x38], ebx
cmp edx, 0x20
jbe 0x530896
mov edi, dword [esp + 0x64]
mov ecx, 0x5a22e0
mov dword [esp + 0x6c], ecx
mov ebx, 3
mov ecx, dword [esp + 0xa4]
jmp 0x53090e
mov ebx, dword [esp + 0x6c]
cmp ebx, dword [esp + 0x74]
jb 0x5308b4
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 0x530902
cmp ebx, eax
jne 0x5308cc
mov edi, dword [esp + 0x64]
cmp edx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x53090e
mov edi, edx
mov dword [esp + 0x10], 0
shr edi, 3
mov eax, ebx
sub eax, edi
cmp eax, dword [esp + 0x70]
jae 0x5308f1
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 0x530a04
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 0x530876
cmp edx, 0x20
jbe 0x5309b0
mov ecx, 0x5a22e0
mov dword [esp + 0x6c], ecx
jmp 0x530a08
mov ecx, dword [esp + 0x6c]
cmp ecx, dword [esp + 0x74]
jb 0x5309c6
mov eax, edx
shr eax, 3
sub ecx, eax
and edx, 7
jmp 0x5309f2
cmp ecx, eax
je 0x530a08
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 0x5309e7
mov eax, ecx
sub eax, dword [esp + 0x70]
jmp 0x5309eb
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 0x530a34
mov ebp, 0x5a22e0
mov dword [esp + 0x10], 3
jmp 0x530aad
cmp ebp, dword [esp + 0x74]
jb 0x530a4e
mov eax, edx
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and edx, 7
jmp 0x530a9e
cmp ebp, eax
jne 0x530a72
mov eax, dword [esp + 0x8c]
cmp edx, 0x20
jae 0x530a68
mov dword [esp + 0x10], 1
jmp 0x530ab8
mov dword [esp + 0x10], 2
jmp 0x530ab8
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 0x530a97
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 0x530b14
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 0x530a20
mov edi, dword [esp + 0x2c]
mov dword [esp + 0xa4], ebx
cmp ebx, dword [esp + 0x94]
jae 0x530b76
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 0x530b40
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 0x530ca7
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x20]
cmp edi, 0x20
jbe 0x530bae
mov ecx, 0x5a22e0
mov ebx, 3
mov dword [esp + 0x58], ecx
mov ecx, dword [esp + 0x20]
jmp 0x530c1c
mov edx, dword [esp + 0x58]
cmp edx, dword [esp + 0x60]
jb 0x530bc6
mov eax, edi
and edi, 7
shr eax, 3
sub edx, eax
xor ebx, ebx
jmp 0x530c0e
cmp edx, eax
jne 0x530bde
mov edx, dword [esp + 0x50]
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x530c1c
mov ebx, edi
mov dword [esp + 0x10], 0
shr ebx, 3
mov eax, edx
sub eax, ebx
cmp eax, dword [esp + 0x5c]
jae 0x530c03
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 0x530d17
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 0x530b95
cmp edi, 0x20
jbe 0x530cb7
mov ecx, 0x5a22e0
mov dword [esp + 0x58], ecx
jmp 0x530d1f
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0x60]
jb 0x530cdb
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 0x530d1b
cmp ecx, eax
je 0x530d1f
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 0x530cfc
mov eax, ecx
sub eax, dword [esp + 0x5c]
jmp 0x530d00
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 0x530d1b
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 0x530d44
mov ebp, 0x5a22e0
mov dword [esp + 0x10], 3
jmp 0x530db4
cmp ebp, dword [esp + 0x60]
jb 0x530d5e
mov eax, edi
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and edi, 7
jmp 0x530da9
cmp ebp, eax
jne 0x530d7d
mov eax, esi
cmp edi, 0x20
jae 0x530d73
mov dword [esp + 0x10], 1
jmp 0x530dba
mov dword [esp + 0x10], 2
jmp 0x530dba
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 0x530da2
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 0x530e0c
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 0x530d30
mov ebx, dword [esp + 0x34]
cmp edx, dword [esp + 0x1c]
jae 0x530e4c
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 0x530e22
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 0x530f8b
mov edx, dword [esp + 0x3c]
mov ecx, dword [esp + 0x24]
nop
cmp ebx, 0x20
jbe 0x530e89
mov ecx, 0x5a22e0
mov edi, 3
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x24]
jmp 0x530efb
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x4c]
jb 0x530ea1
mov eax, ebx
and ebx, 7
shr eax, 3
sub edx, eax
xor edi, edi
jmp 0x530ee9
cmp edx, eax
jne 0x530eb9
mov edx, dword [esp + 0x3c]
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x1c], eax
mov edi, eax
jmp 0x530efb
mov edi, ebx
mov dword [esp + 0x1c], 0
shr edi, 3
mov eax, edx
sub eax, edi
cmp eax, dword [esp + 0x48]
jae 0x530ede
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 0x531001
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 0x530e70
cmp ebx, 0x20
jbe 0x530f9b
mov ecx, 0x5a22e0
mov dword [esp + 0x44], ecx
jmp 0x531009
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0x4c]
jb 0x530fc3
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 0x53100d
cmp ecx, eax
je 0x531009
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 0x530fe2
mov eax, ecx
sub eax, edi
jmp 0x530fe6
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 0x53100d
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 0x531029
mov ebp, 0x5a22e0
mov dword [esp + 0x1c], 3
jmp 0x53108c
cmp ebp, dword [esp + 0x4c]
jb 0x531043
mov eax, ebx
mov dword [esp + 0x1c], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x531081
cmp ebp, eax
jne 0x531055
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x1c], eax
jmp 0x531090
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 0x53107a
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 0x5310db
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 0x531015
mov esi, dword [esp + 0x28]
mov ebp, dword [esp + 0x30]
cmp edx, dword [esp + 0x90]
jae 0x531126
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 0x5310f4
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 0x531249
mov edx, dword [esp + 0x78]
add ecx, 0xfffffffd
mov dword [esp + 0x9c], ecx
nop
cmp ebp, 0x20
jbe 0x531168
mov eax, 0x5a22e0
mov edi, 3
mov dword [esp + 0x80], eax
jmp 0x5311cf
mov edx, dword [esp + 0x80]
cmp edx, dword [esp + 0x88]
jb 0x531186
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
xor edi, edi
jmp 0x5311be
cmp edx, ebx
jne 0x531198
mov edx, dword [esp + 0x78]
cmp ebp, 0x20
sbb edi, edi
add edi, 2
jmp 0x5311cf
mov ecx, ebp
mov eax, edx
shr ecx, 3
xor edi, edi
sub eax, ecx
cmp eax, ebx
jae 0x5311b0
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 0x5312c8
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 0x531150
mov eax, dword [esp + 0x88]
cmp ebp, 0x20
jbe 0x531263
mov edx, 0x5a22e0
mov dword [esp + 0x80], edx
jmp 0x5312d6
mov edx, dword [esp + 0x80]
cmp edx, eax
jb 0x531292
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 0x5312da
cmp edx, ebx
je 0x5312d6
mov ecx, ebp
mov eax, edx
shr ecx, 3
sub eax, ecx
cmp eax, ebx
jae 0x5312a7
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 0x5312da
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 0x5312fb
mov eax, 0x5a22e0
mov edx, 3
mov dword [esp + 0x80], eax
jmp 0x531373
cmp edx, eax
jb 0x531316
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 0x53136b
cmp edx, dword [esp + 0x84]
jne 0x53132f
cmp ebp, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x1c], eax
mov edx, eax
jmp 0x531373
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 0x531357
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 0x5313bc
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 0x5312e0
cmp esi, dword [esp + 0x98]
jae 0x5313ee
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 0x5313c5
mov dword [esp + 0x7c], ebp
lea eax, [esp + 0x78]
push eax
call fcn.0052fa00
mov edx, eax
lea eax, [esp + 0x40]
push eax
call fcn.0052fa00
and edx, eax
lea eax, [esp + 0x58]
push eax
call fcn.0052fa00
and edx, eax
lea eax, [esp + 0x70]
push eax
call fcn.0052fa00
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