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

Disassembly:
sub esp, 0xb4
push ebx
mov ebx, dword [esp + 0xc8]
cmp ebx, 0xa
jae 0x5304b0
mov eax, 0xffffffec
pop ebx
add esp, 0xb4
ret
mov eax, dword [esp + 0xc0]
cmp eax, 6
jb 0x5304a3
mov ecx, dword [esp + 0xcc]
mov edx, dword [esp + 0xbc]
add eax, edx
mov dword [esp + 0x58], eax
push ebp
lea eax, [ecx + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0xc8]
push esi
push edi
mov edi, ebx
movzx ebp, word [eax + 2]
movzx esi, word [eax]
mov dword [esp + 0x10], ebp
movzx ebp, word [eax + 4]
add eax, 6
sub edi, ebp
mov dword [esp + 0x70], eax
sub edi, dword [esp + 0x10]
sub edi, esi
mov dword [esp + 0x18], esi
add esi, eax
sub edi, 6
mov eax, dword [esp + 0x10]
add eax, esi
mov dword [esp + 0x6c], esi
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xcc]
add eax, 3
shr eax, 2
add edx, eax
mov dword [esp + 0x5c], edx
mov dword [esp + 0x30], edx
lea esi, [edx + eax]
add eax, esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x38], eax
mov eax, dword [ecx]
shr eax, 0x10
mov dword [esp + 0x2c], esi
movzx esi, al
mov dword [esp + 0x68], esi
cmp edi, ebx
ja 0x5309ec
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x60], eax
ja 0x5309ec
push dword [esp + 0x18]
lea eax, [esp + 0x78]
push dword [esp + 0x74]
push eax
call fcn.0052ea70
add esp, 0xc
cmp eax, 0xffffff88
ja 0x53191e
push dword [esp + 0x10]
lea eax, [esp + 0x8c]
push dword [esp + 0x70]
push eax
call fcn.0052ea70
add esp, 0xc
cmp eax, 0xffffff88
ja 0x53191e
mov ebx, dword [esp + 0x44]
lea eax, [esp + 0x9c]
push ebp
push ebx
push eax
call fcn.0052ea70
add esp, 0xc
cmp eax, 0xffffff88
ja 0x53191e
push edi
lea eax, [ebx + ebp]
push eax
lea eax, [esp + 0xb8]
push eax
call fcn.0052ea70
add esp, 0xc
cmp eax, 0xffffff88
ja 0x53191e
mov edx, dword [esp + 0x64]
mov eax, edx
mov ecx, dword [esp + 0x60]
sub eax, ecx
cmp eax, 4
jb 0x53094c
lea eax, [edx - 3]
cmp ecx, eax
jae 0x53094c
mov eax, dword [esp + 0x7c]
neg esi
mov edx, dword [esp + 0x74]
and esi, 0x1f
mov ebx, dword [esp + 0x78]
mov edi, dword [esp + 0x8c]
mov ebp, dword [esp + 0xa0]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0xb4]
mov dword [esp + 0x24], edx
mov dword [esp + 0x4c], eax
jmp 0x53067c
mov edx, dword [esp + 0x24]
mov ecx, ebx
mov eax, edx
mov edx, dword [esp + 0xc8]
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 3]
movzx edx, byte [ecx + 2]
mov ecx, edi
add dword [esp + 0xc8], eax
and ecx, 0x1f
mov eax, dword [esp + 0x48]
add edx, ebx
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [ebx], ax
movzx eax, byte [ecx + 2]
add edi, eax
movzx eax, byte [ecx + 3]
add ebx, eax
mov ecx, ebp
mov eax, dword [esp + 0x40]
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
mov dword [esp + 0x30], ebx
movzx eax, word [ecx]
mov ebx, dword [esp + 0x2c]
mov word [ebx], ax
movzx eax, byte [ecx + 3]
movzx ebx, byte [ecx + 2]
mov ecx, esi
add dword [esp + 0x2c], eax
and ecx, 0x1f
mov eax, dword [esp + 0x4c]
add ebx, ebp
mov ebp, dword [esp + 0x38]
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [ebp], ax
movzx eax, byte [ecx + 3]
movzx ebp, byte [ecx + 2]
mov ecx, edx
add dword [esp + 0x38], eax
and ecx, 0x1f
mov eax, dword [esp + 0x24]
add ebp, esi
mov esi, dword [esp + 0xc8]
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [esi], ax
movzx eax, byte [ecx + 2]
add eax, edx
mov dword [esp + 0x14], eax
movzx eax, byte [ecx + 3]
mov ecx, edi
add esi, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0xc8], esi
and ecx, 0x1f
mov esi, dword [esp + 0x1c]
shl eax, cl
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0x30]
shr eax, cl
lea ecx, [esi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add eax, edi
mov dword [esp + 0x20], eax
movzx eax, byte [ecx + 3]
mov ecx, ebx
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x40]
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x2c]
lea ecx, [esi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add eax, ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x34], eax
movzx eax, byte [ecx + 3]
mov ecx, ebp
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x4c]
shl eax, cl
mov ecx, dword [esp + 0x28]
shr eax, cl
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x38]
lea ecx, [esi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx esi, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add esi, ebp
mov ecx, dword [esp + 0x50]
add edx, eax
mov dword [esp + 0x38], edx
cmp ecx, dword [esp + 0x84]
jae 0x530830
mov dword [esp + 0x18], 3
jmp 0x530850
mov eax, ebx
mov dword [esp + 0x18], 0
shr eax, 3
sub ecx, eax
and ebx, 7
mov dword [esp + 0x50], ecx
mov dword [esp + 0x14], ebx
mov eax, dword [ecx]
mov dword [esp + 0x24], eax
mov ecx, dword [esp + 0x54]
mov edi, dword [esp + 0x20]
cmp ecx, dword [esp + 0x98]
jae 0x53086b
mov dword [esp + 0x70], 3
jmp 0x53088b
mov eax, edi
mov dword [esp + 0x70], 0
shr eax, 3
sub ecx, eax
and edi, 7
mov dword [esp + 0x54], ecx
mov dword [esp + 0x20], edi
mov eax, dword [ecx]
mov dword [esp + 0x48], eax
mov ecx, dword [esp + 0x58]
mov ebp, dword [esp + 0x34]
cmp ecx, dword [esp + 0xac]
jae 0x5308a6
mov dword [esp + 0x6c], 3
jmp 0x5308c6
mov eax, ebp
mov dword [esp + 0x6c], 0
shr eax, 3
sub ecx, eax
and ebp, 7
mov dword [esp + 0x58], ecx
mov dword [esp + 0x34], ebp
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0xc0]
jae 0x5308dd
mov dword [esp + 0x10], 3
jmp 0x5308f9
mov eax, esi
mov dword [esp + 0x10], 0
shr eax, 3
sub ecx, eax
and esi, 7
mov dword [esp + 0x44], ecx
mov eax, dword [ecx]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x64]
add eax, 0xfffffffd
cmp edx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
xor edx, edx
and ecx, eax
cmp dword [esp + 0x6c], edx
cmove edx, ecx
xor eax, eax
cmp dword [esp + 0x70], eax
sete al
and edx, eax
xor eax, eax
cmp dword [esp + 0x18], eax
cmove eax, edx
test eax, eax
jne 0x530678
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x28], esi
mov esi, dword [esp + 0x68]
mov ebx, dword [esp + 0x28]
jmp 0x5309c7
mov eax, dword [esp + 0x74]
mov ecx, dword [esp + 0x7c]
mov edx, dword [esp + 0x78]
mov edi, dword [esp + 0x8c]
mov ebp, dword [esp + 0xa0]
mov ebx, dword [esp + 0xb4]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x88]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], edi
mov dword [esp + 0x34], ebp
mov dword [esp + 0x28], ebx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0xc8], eax
ja 0x5309ec
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x30], eax
ja 0x5309ec
mov eax, dword [esp + 0x60]
cmp dword [esp + 0x2c], eax
mov eax, dword [esp + 0x5c]
jbe 0x5309fc
pop edi
pop esi
pop ebp
mov eax, 0xffffffec
pop ebx
add esp, 0xb4
ret
sub eax, dword [esp + 0xc8]
cmp eax, 4
mov eax, dword [esp + 0x80]
jb 0x530b4f
mov edi, dword [esp + 0xc8]
nop word [eax + eax]
cmp edx, 0x20
jbe 0x530a35
mov eax, 0x5a1370
mov ebx, 3
mov dword [esp + 0x50], eax
jmp 0x530aaa
cmp ecx, dword [esp + 0x84]
jb 0x530a52
mov eax, edx
and edx, 7
shr eax, 3
sub ecx, eax
mov ebx, dword [ecx]
mov dword [esp + 0x24], ebx
xor ebx, ebx
jmp 0x530aa2
cmp ecx, eax
jne 0x530a66
cmp edx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x530aaa
mov ebx, edx
mov dword [esp + 0x10], 0
shr ebx, 3
mov eax, ecx
sub eax, ebx
cmp eax, dword [esp + 0x80]
jae 0x530a91
mov ebx, ecx
mov dword [esp + 0x10], 1
sub ebx, dword [esp + 0x80]
imul eax, ebx, 0xfffffff8
sub ecx, ebx
mov ebx, dword [esp + 0x10]
add edx, eax
mov eax, dword [ecx]
mov dword [esp + 0x24], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x50], ecx
mov eax, dword [esp + 0x5c]
add eax, 0xfffffffd
cmp edi, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test ebx, ebx
sete al
test eax, ecx
je 0x530bc4
mov eax, dword [esp + 0x24]
mov ecx, edx
and ecx, 0x1f
mov ebx, esi
shl eax, cl
neg ebx
and ebx, 0x1f
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + eax*4]
movzx eax, word [edx]
mov word [edi], ax
movzx edi, byte [edx + 2]
movzx eax, byte [edx + 3]
add edi, dword [esp + 0x14]
mov edx, dword [esp + 0xc8]
mov ecx, edi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x24]
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
mov dword [esp + 0xc8], edx
movzx eax, word [ecx]
mov word [edx], ax
movzx edx, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add edx, edi
mov edi, dword [esp + 0xc8]
mov ecx, dword [esp + 0x50]
add edi, eax
mov eax, dword [esp + 0x80]
mov dword [esp + 0x14], edx
mov dword [esp + 0xc8], edi
jmp 0x530a20
cmp edx, 0x20
jbe 0x530b5f
mov ecx, 0x5a1370
mov dword [esp + 0x50], ecx
jmp 0x530bd0
cmp ecx, dword [esp + 0x84]
jb 0x530b82
mov eax, edx
shr eax, 3
sub ecx, eax
and edx, 7
mov dword [esp + 0x50], ecx
mov dword [esp + 0x14], edx
mov eax, dword [ecx]
mov dword [esp + 0x24], eax
jmp 0x530bd0
cmp ecx, eax
je 0x530bd0
mov eax, edx
shr eax, 3
mov dword [esp + 0x18], eax
mov eax, ecx
sub eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x80]
jae 0x530ba9
mov eax, ecx
sub eax, dword [esp + 0x80]
jmp 0x530bad
mov eax, dword [esp + 0x18]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x50], ecx
add edx, eax
mov eax, dword [ecx]
mov dword [esp + 0x14], edx
mov dword [esp + 0x24], eax
jmp 0x530bd0
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x50]
mov eax, dword [esp + 0x5c]
sub eax, dword [esp + 0xc8]
cmp eax, 2
jb 0x530d67
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x24]
cmp edx, 0x20
jbe 0x530c0a
mov dword [esp + 0x50], 0x5a1370
mov dword [esp + 0x24], 3
jmp 0x530c87
cmp ecx, dword [esp + 0x84]
jb 0x530c27
mov eax, edx
mov dword [esp + 0x24], 0
shr eax, 3
sub ecx, eax
and edx, 7
jmp 0x530c7d
cmp ecx, dword [esp + 0x80]
jne 0x530c4b
mov eax, esi
cmp edx, 0x20
jae 0x530c41
mov dword [esp + 0x24], 1
jmp 0x530c89
mov dword [esp + 0x24], 2
jmp 0x530c89
mov ebp, edx
mov dword [esp + 0x24], 0
shr ebp, 3
mov eax, ecx
sub eax, ebp
cmp eax, dword [esp + 0x80]
jae 0x530c76
mov ebp, ecx
mov dword [esp + 0x24], 1
sub ebp, dword [esp + 0x80]
imul eax, ebp, 0xfffffff8
sub ecx, ebp
add edx, eax
mov ebp, dword [ecx]
mov dword [esp + 0x14], edx
mov dword [esp + 0x50], ecx
mov eax, esi
neg eax
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x5c]
add eax, 0xfffffffe
cmp eax, ebx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x24], eax
sete al
test eax, ecx
je 0x530cde
mov ecx, edx
mov edx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x50]
mov ax, word [edi + edx*4]
mov word [ebx], ax
movzx eax, byte [edi + edx*4 + 2]
add dword [esp + 0x14], eax
movzx eax, byte [edi + edx*4 + 3]
mov edx, dword [esp + 0x14]
add ebx, eax
jmp 0x530bf3
mov eax, dword [esp + 0x5c]
mov edi, dword [esp + 0x20]
add eax, 0xfffffffe
mov dword [esp + 0x24], ebp
cmp ebx, eax
mov ebp, dword [esp + 0x34]
mov dword [esp + 0xc8], ebx
mov ebx, dword [esp + 0x28]
ja 0x530d67
and dword [esp + 0x10], 0x1f
mov edi, dword [esp + 0xc8]
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 0x10]
mov ecx, edx
mov eax, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, esi
shr eax, cl
lea ecx, [eax*4]
mov ax, word [ecx + ebp]
mov word [edi], ax
movzx eax, byte [ecx + ebp + 2]
add edx, eax
movzx eax, byte [ecx + ebp + 3]
add edi, eax
mov eax, dword [esp + 0x5c]
add eax, 0xfffffffe
cmp edi, eax
jbe 0x530d18
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0xc8], edi
mov edi, dword [esp + 0x20]
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0xc8], eax
jae 0x530dd5
mov eax, dword [esp + 0x24]
mov ecx, edx
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
lea ebp, [eax + ecx*4]
mov al, byte [eax + ecx*4]
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x18], ebp
mov byte [ecx], al
mov eax, ebp
mov ebp, dword [esp + 0x34]
cmp byte [eax + 3], 1
jne 0x530dbb
movzx eax, byte [eax + 2]
add edx, eax
jmp 0x530dd1
cmp edx, 0x20
jae 0x530dd5
movzx eax, byte [eax + 2]
add edx, eax
mov eax, 0x20
cmp edx, 0x20
cmova edx, eax
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
sub eax, ecx
cmp eax, 4
mov eax, dword [esp + 0x94]
jb 0x530f1a
nop
cmp edi, 0x20
jbe 0x530e04
mov dword [esp + 0x54], 0x5a1370
mov edx, 3
jmp 0x530e81
mov edx, dword [esp + 0x54]
cmp edx, dword [esp + 0x98]
jb 0x530e29
mov eax, edi
and edi, 7
shr eax, 3
sub edx, eax
mov dword [esp + 0x54], edx
mov ebx, dword [edx]
xor edx, edx
mov dword [esp + 0x48], ebx
jmp 0x530e7d
cmp edx, eax
jne 0x530e3d
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov edx, eax
jmp 0x530e81
mov ebx, edi
mov dword [esp + 0x10], 0
shr ebx, 3
mov eax, edx
sub eax, ebx
cmp eax, dword [esp + 0x94]
jae 0x530e68
mov ebx, edx
mov dword [esp + 0x10], 1
sub ebx, dword [esp + 0x94]
sub edx, ebx
imul eax, ebx, 0xfffffff8
mov dword [esp + 0x54], edx
add edi, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x48], eax
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x3c]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test edx, edx
sete al
test eax, ecx
je 0x530f92
mov eax, dword [esp + 0x48]
mov ecx, edi
and ecx, 0x1f
mov ebx, esi
shl eax, cl
neg ebx
and ebx, 0x1f
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x30]
movzx eax, word [edx]
mov word [ecx], ax
movzx eax, byte [edx + 2]
add edi, eax
movzx eax, byte [edx + 3]
add ecx, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x30], ecx
mov ecx, edi
mov edx, dword [esp + 0x30]
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add eax, edi
mov dword [esp + 0x20], eax
movzx eax, byte [ecx + 3]
mov ecx, edx
mov edi, dword [esp + 0x20]
add ecx, eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x30], ecx
jmp 0x530df0
cmp edi, 0x20
jbe 0x530f29
mov dword [esp + 0x54], 0x5a1370
jmp 0x530f9e
mov ecx, dword [esp + 0x54]
cmp ecx, dword [esp + 0x98]
jb 0x530f50
mov eax, edi
shr eax, 3
sub ecx, eax
and edi, 7
mov dword [esp + 0x54], ecx
mov dword [esp + 0x20], edi
mov eax, dword [ecx]
mov dword [esp + 0x48], eax
jmp 0x530f9a
cmp ecx, eax
je 0x530f9a
mov eax, edi
shr eax, 3
mov dword [esp + 0x18], eax
mov eax, ecx
sub eax, dword [esp + 0x18]
cmp eax, dword [esp + 0x94]
jae 0x530f77
mov eax, ecx
sub eax, dword [esp + 0x94]
jmp 0x530f7b
mov eax, dword [esp + 0x18]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x54], ecx
add edi, eax
mov eax, dword [ecx]
mov dword [esp + 0x20], edi
mov dword [esp + 0x48], eax
jmp 0x530f9a
mov ebx, dword [esp + 0x28]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x3c]
sub eax, ecx
cmp eax, 2
jb 0x53111f
mov edx, dword [esp + 0x3c]
mov ebx, dword [esp + 0x54]
add edx, 0xfffffffe
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x10], edx
cmp edi, 0x20
jbe 0x530fd4
mov ebx, 0x5a1370
mov dword [esp + 0x5c], 3
jmp 0x53104d
cmp ebx, dword [esp + 0x98]
jb 0x530ff1
mov eax, edi
mov dword [esp + 0x5c], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x531047
cmp ebx, dword [esp + 0x94]
jne 0x531015
mov edx, esi
cmp edi, 0x20
jae 0x53100b
mov dword [esp + 0x5c], 1
jmp 0x53104f
mov dword [esp + 0x5c], 2
jmp 0x53104f
mov edx, edi
mov dword [esp + 0x5c], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0x94]
jae 0x531040
mov edx, ebx
mov dword [esp + 0x5c], 1
sub edx, dword [esp + 0x94]
imul eax, edx, 0xfffffff8
sub ebx, edx
add edi, eax
mov eax, dword [ebx]
mov dword [esp + 0x48], eax
mov edx, esi
neg edx
cmp dword [esp + 0x10], ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x5c], eax
sete al
test eax, ecx
je 0x53109c
mov edx, dword [esp + 0x48]
mov ecx, edi
and ecx, 0x1f
shl edx, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x30]
mov ax, word [ebp + edx*4]
mov word [ecx], ax
movzx eax, byte [ebp + edx*4 + 2]
add edi, eax
movzx eax, byte [ebp + edx*4 + 3]
add ecx, eax
mov dword [esp + 0x30], ecx
jmp 0x530fc0
mov ecx, dword [esp + 0x30]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x20], edi
cmp ecx, dword [esp + 0x10]
ja 0x53111b
mov ebp, dword [esp + 0x1c]
and edx, 0x1f
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], edx
nop dword [eax]
mov ecx, edi
mov eax, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, edx
mov edx, dword [esp + 0x30]
shr eax, cl
lea ecx, [eax*4]
mov ax, word [ecx + ebp]
mov word [edx], ax
movzx eax, byte [ecx + ebp + 2]
add edi, eax
movzx eax, byte [ecx + ebp + 3]
mov ecx, edx
mov edx, dword [esp + 0x18]
add ecx, eax
mov dword [esp + 0x30], ecx
cmp ecx, esi
jbe 0x5310d0
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x20], edi
mov edx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x3c]
jae 0x531183
mov eax, dword [esp + 0x48]
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x48]
lea esi, [eax + ecx*4]
mov al, byte [eax + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x18], esi
mov byte [ecx], al
mov eax, esi
mov esi, dword [esp + 0x68]
cmp byte [eax + 3], 1
jne 0x531169
movzx eax, byte [eax + 2]
add edi, eax
jmp 0x53117f
cmp edi, 0x20
jae 0x531183
movzx eax, byte [eax + 2]
add edi, eax
mov eax, 0x20
cmp edi, 0x20
cmova edi, eax
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x2c]
sub eax, ecx
cmp eax, 4
mov eax, dword [esp + 0xa8]
jb 0x5312ae
mov edx, dword [esp + 0x40]
cmp ebp, 0x20
jbe 0x5311b5
mov dword [esp + 0x58], 0x5a1370
mov ebx, 3
jmp 0x531219
mov edx, dword [esp + 0x58]
cmp edx, dword [esp + 0xac]
jb 0x5311d0
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
xor ebx, ebx
jmp 0x53120b
cmp edx, eax
jne 0x5311e2
mov edx, dword [esp + 0x40]
cmp ebp, 0x20
sbb ebx, ebx
add ebx, 2
jmp 0x531219
mov edi, ebp
mov eax, edx
shr edi, 3
xor ebx, ebx
sub eax, edi
cmp eax, dword [esp + 0xa8]
jae 0x531204
mov edi, edx
mov ebx, 1
sub edi, dword [esp + 0xa8]
imul eax, edi, 0xfffffff8
sub edx, edi
add ebp, eax
mov dword [esp + 0x58], edx
mov edx, dword [edx]
mov dword [esp + 0x40], edx
mov dword [esp + 0x34], ebp
mov eax, dword [esp + 0x60]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test ebx, ebx
sete al
test eax, ecx
je 0x531326
mov ecx, ebp
mov ebx, esi
and ecx, 0x1f
neg ebx
and ebx, 0x1f
mov eax, edx
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x2c]
movzx eax, word [edx]
mov word [ecx], ax
movzx eax, byte [edx + 3]
movzx edi, byte [edx + 2]
add ecx, eax
mov edx, dword [esp + 0x40]
add edi, ebp
mov dword [esp + 0x2c], ecx
mov eax, edx
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
mov ebx, dword [esp + 0x2c]
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [ebx], ax
movzx ebp, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add ebp, edi
mov ecx, ebx
mov dword [esp + 0x34], ebp
add ecx, eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x2c], ecx
jmp 0x5311a1
cmp ebp, 0x20
jbe 0x5312bd
mov dword [esp + 0x58], 0x5a1370
jmp 0x531336
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0xac]
jb 0x5312e4
mov eax, ebp
shr eax, 3
sub ecx, eax
and ebp, 7
mov dword [esp + 0x58], ecx
mov dword [esp + 0x34], ebp
mov eax, dword [ecx]
mov dword [esp + 0x40], eax
jmp 0x531332
cmp ecx, eax
je 0x531332
mov eax, ebp
shr eax, 3
mov dword [esp + 0x18], eax
mov eax, ecx
sub eax, dword [esp + 0x18]
cmp eax, dword [esp + 0xa8]
jae 0x53130b
mov eax, ecx
sub eax, dword [esp + 0xa8]
jmp 0x53130f
mov eax, dword [esp + 0x18]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x58], ecx
add ebp, eax
mov eax, dword [ecx]
mov dword [esp + 0x34], ebp
mov dword [esp + 0x40], eax
jmp 0x531332
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
mov eax, dword [esp + 0x60]
sub eax, ecx
cmp eax, 2
jb 0x5314a8
mov edx, dword [esp + 0x60]
mov ebx, dword [esp + 0x58]
add edx, 0xfffffffe
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x10], edx
cmp ebp, 0x20
jbe 0x53136c
mov ebx, 0x5a1370
mov dword [esp + 0x3c], 3
jmp 0x5313e5
cmp ebx, dword [esp + 0xac]
jb 0x531389
mov eax, ebp
mov dword [esp + 0x3c], 0
shr eax, 3
sub ebx, eax
and ebp, 7
jmp 0x5313df
cmp ebx, dword [esp + 0xa8]
jne 0x5313ad
mov edx, esi
cmp ebp, 0x20
jae 0x5313a3
mov dword [esp + 0x3c], 1
jmp 0x5313e7
mov dword [esp + 0x3c], 2
jmp 0x5313e7
mov edx, ebp
mov dword [esp + 0x3c], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0xa8]
jae 0x5313d8
mov edx, ebx
mov dword [esp + 0x3c], 1
sub edx, dword [esp + 0xa8]
imul eax, edx, 0xfffffff8
sub ebx, edx
add ebp, eax
mov eax, dword [ebx]
mov dword [esp + 0x40], eax
mov edx, esi
neg edx
cmp dword [esp + 0x10], ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x3c], eax
sete al
test eax, ecx
je 0x531433
mov edx, dword [esp + 0x40]
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x2c]
mov ax, word [edi + edx*4]
mov word [ecx], ax
movzx eax, byte [edi + edx*4 + 2]
add ebp, eax
movzx eax, byte [edi + edx*4 + 3]
add ecx, eax
mov dword [esp + 0x2c], ecx
jmp 0x531358
mov ecx, dword [esp + 0x2c]
mov edi, dword [esp + 0x20]
mov dword [esp + 0x58], ebx
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x34], ebp
cmp ecx, dword [esp + 0x10]
ja 0x5314a4
mov ebx, dword [esp + 0x1c]
and edx, 0x1f
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], edx
mov ecx, ebp
mov eax, edi
and ecx, 0x1f
shl eax, cl
mov ecx, edx
mov edx, dword [esp + 0x2c]
shr eax, cl
lea ecx, [ebx + eax*4]
mov ax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add ebp, eax
movzx eax, byte [ecx + 3]
mov ecx, edx
mov edx, dword [esp + 0x18]
add ecx, eax
mov dword [esp + 0x2c], ecx
cmp ecx, esi
jbe 0x531460
mov esi, dword [esp + 0x68]
mov ebx, dword [esp + 0x28]
mov edi, dword [esp + 0x20]
mov dword [esp + 0x34], ebp
mov edx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x60]
jae 0x53150c
mov eax, dword [esp + 0x40]
mov ecx, ebp
and ecx, 0x1f
shl eax, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr eax, cl
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x40]
lea esi, [eax + ecx*4]
mov al, byte [eax + ecx*4]
mov ecx, dword [esp + 0x2c]
mov dword [esp + 0x18], esi
mov byte [ecx], al
mov eax, esi
mov esi, dword [esp + 0x68]
cmp byte [eax + 3], 1
jne 0x5314f2
movzx eax, byte [eax + 2]
add ebp, eax
jmp 0x531508
cmp ebp, 0x20
jae 0x53150c
movzx eax, byte [eax + 2]
add ebp, eax
mov eax, 0x20
cmp ebp, 0x20
cmova ebp, eax
mov dword [esp + 0x34], ebp
mov eax, dword [esp + 0x64]
mov ecx, dword [esp + 0x38]
sub eax, ecx
cmp eax, 4
mov eax, dword [esp + 0xbc]
jb 0x531650
cmp ebx, 0x20
jbe 0x53153a
mov dword [esp + 0x44], 0x5a1370
mov edx, 3
jmp 0x5315b7
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0xc0]
jb 0x53155f
mov eax, ebx
and ebx, 7
shr eax, 3
sub edx, eax
mov dword [esp + 0x44], edx
mov edi, dword [edx]
xor edx, edx
mov dword [esp + 0x4c], edi
jmp 0x5315b3
cmp edx, eax
jne 0x531573
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov edx, eax
jmp 0x5315b7
mov edi, ebx
mov dword [esp + 0x10], 0
shr edi, 3
mov eax, edx
sub eax, edi
cmp eax, dword [esp + 0xbc]
jae 0x53159e
mov edi, edx
mov dword [esp + 0x10], 1
sub edi, dword [esp + 0xbc]
sub edx, edi
imul eax, edi, 0xfffffff8
mov dword [esp + 0x44], edx
add ebx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x10]
mov dword [esp + 0x4c], eax
mov dword [esp + 0x28], ebx
mov eax, dword [esp + 0x64]
add eax, 0xfffffffd
cmp ecx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
test edx, edx
sete al
test eax, ecx
je 0x5316d1
mov edi, dword [esp + 0x28]
mov ebx, esi
mov eax, dword [esp + 0x4c]
neg ebx
and ebx, 0x1f
mov ecx, edi
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x38]
movzx eax, word [edx]
mov word [ecx], ax
movzx eax, byte [edx + 2]
add edi, eax
movzx eax, byte [edx + 3]
add ecx, eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x38], ecx
mov ecx, edi
mov edx, dword [esp + 0x38]
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x1c]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx ebx, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add ebx, edi
mov ecx, edx
mov dword [esp + 0x28], ebx
add ecx, eax
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x38], ecx
jmp 0x531526
cmp ebx, 0x20
jbe 0x53165f
mov dword [esp + 0x44], 0x5a1370
jmp 0x5316dd
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0xc0]
jb 0x531682
mov eax, ebx
shr eax, 3
sub ecx, eax
and ebx, 7
mov dword [esp + 0x44], ecx
mov eax, dword [ecx]
mov dword [esp + 0x4c], eax
jmp 0x5316d9
cmp ecx, eax
je 0x5316d9
mov eax, ebx
shr eax, 3
mov dword [esp + 0x18], eax
mov eax, ecx
sub eax, dword [esp + 0x18]
cmp eax, dword [esp + 0xbc]
jae 0x5316ba
mov eax, ecx
sub eax, dword [esp + 0xbc]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x44], ecx
add ebx, eax
mov eax, dword [ecx]
mov dword [esp + 0x4c], eax
jmp 0x5316d9
mov eax, dword [esp + 0x18]
sub ecx, eax
imul eax, eax, 0xfffffff8
mov dword [esp + 0x44], ecx
add ebx, eax
mov eax, dword [ecx]
mov dword [esp + 0x4c], eax
jmp 0x5316d9
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x64]
sub eax, ecx
cmp eax, 2
jb 0x531850
mov edx, dword [esp + 0x64]
mov edi, dword [esp + 0x44]
add edx, 0xfffffffe
mov ebp, dword [esp + 0x1c]
mov dword [esp + 0x10], edx
nop
cmp ebx, 0x20
jbe 0x531714
mov edi, 0x5a1370
mov dword [esp + 0x3c], 3
jmp 0x53178d
cmp edi, dword [esp + 0xc0]
jb 0x531731
mov eax, ebx
mov dword [esp + 0x3c], 0
shr eax, 3
sub edi, eax
and ebx, 7
jmp 0x531787
cmp edi, dword [esp + 0xbc]
jne 0x531755
mov edx, esi
cmp ebx, 0x20
jae 0x53174b
mov dword [esp + 0x3c], 1
jmp 0x53178f
mov dword [esp + 0x3c], 2
jmp 0x53178f
mov edx, ebx
mov dword [esp + 0x3c], 0
shr edx, 3
mov eax, edi
sub eax, edx
cmp eax, dword [esp + 0xbc]
jae 0x531780
mov edx, edi
mov dword [esp + 0x3c], 1
sub edx, dword [esp + 0xbc]
imul eax, edx, 0xfffffff8
sub edi, edx
add ebx, eax
mov eax, dword [edi]
mov dword [esp + 0x4c], eax
mov edx, esi
neg edx
cmp dword [esp + 0x10], ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x3c], eax
sete al
test eax, ecx
je 0x5317dc
mov edx, dword [esp + 0x4c]
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, esi
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x38]
mov ax, word [ebp + edx*4]
mov word [ecx], ax
movzx eax, byte [ebp + edx*4 + 2]
add ebx, eax
movzx eax, byte [ebp + edx*4 + 3]
add ecx, eax
mov dword [esp + 0x38], ecx
jmp 0x531700
mov ecx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
mov dword [esp + 0x44], edi
mov edi, dword [esp + 0x20]
cmp ecx, dword [esp + 0x10]
ja 0x53184c
mov ebp, dword [esp + 0x1c]
and edx, 0x1f
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x10]
mov dword [esp + 0x18], edx
mov ecx, ebx
mov eax, edi
and ecx, 0x1f
shl eax, cl
mov ecx, edx
mov edx, dword [esp + 0x38]
shr eax, cl
lea ecx, [eax*4]
mov ax, word [ecx + ebp]
mov word [edx], ax
movzx eax, byte [ecx + ebp + 2]
add ebx, eax
movzx eax, byte [ecx + ebp + 3]
mov ecx, edx
mov edx, dword [esp + 0x18]
add ecx, eax
mov dword [esp + 0x38], ecx
cmp ecx, esi
jbe 0x531805
mov esi, dword [esp + 0x68]
mov ebp, dword [esp + 0x34]
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
cmp ecx, dword [esp + 0x64]
jae 0x5318a5
mov eax, dword [esp + 0x4c]
neg esi
mov ecx, ebx
and esi, 0x1f
and ecx, 0x1f
shl eax, cl
mov ecx, esi
shr eax, cl
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x4c]
lea esi, [eax + ecx*4]
mov ecx, dword [esp + 0x38]
mov al, byte [esi]
mov byte [ecx], al
cmp byte [esi + 3], 1
jne 0x53188f
movzx eax, byte [esi + 2]
add ebx, eax
jmp 0x5318a5
cmp ebx, 0x20
jae 0x5318a5
movzx eax, byte [esi + 2]
add ebx, eax
mov eax, 0x20
cmp ebx, 0x20
cmova ebx, eax
mov eax, dword [esp + 0x50]
cmp eax, dword [esp + 0x80]
jne 0x5318bc
cmp edx, 0x20
jne 0x5318bc
lea esi, [edx - 0x1f]
jmp 0x5318be
xor esi, esi
mov eax, dword [esp + 0x54]
cmp eax, dword [esp + 0x94]
jne 0x5318d5
cmp edi, 0x20
jne 0x5318d5
lea edx, [edi - 0x1f]
jmp 0x5318d7
xor edx, edx
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0xa8]
jne 0x5318ee
cmp ebp, 0x20
jne 0x5318ee
lea ecx, [ebp - 0x1f]
jmp 0x5318f0
xor ecx, ecx
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0xbc]
jne 0x531907
cmp ebx, 0x20
jne 0x531907
lea eax, [ebx - 0x1f]
jmp 0x531909
xor eax, eax
and eax, ecx
mov ecx, 0xffffffec
and eax, edx
test esi, eax
mov eax, dword [esp + 0xcc]
cmove eax, ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb4
ret