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

Disassembly:
sub esp, 0xb4
push ebx
mov ebx, dword [esp + 0xc8]
cmp ebx, 0xa
jae 0x531460
mov eax, 0xffffffec
pop ebx
add esp, 0xb4
ret
mov eax, dword [esp + 0xc0]
cmp eax, 6
jb 0x531453
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 0x53199c
mov eax, dword [esp + 0x64]
cmp dword [esp + 0x60], eax
ja 0x53199c
push dword [esp + 0x18]
lea eax, [esp + 0x78]
push dword [esp + 0x74]
push eax
call fcn.0052fa20
add esp, 0xc
cmp eax, 0xffffff88
ja 0x5328ce
push dword [esp + 0x10]
lea eax, [esp + 0x8c]
push dword [esp + 0x70]
push eax
call fcn.0052fa20
add esp, 0xc
cmp eax, 0xffffff88
ja 0x5328ce
mov ebx, dword [esp + 0x44]
lea eax, [esp + 0x9c]
push ebp
push ebx
push eax
call fcn.0052fa20
add esp, 0xc
cmp eax, 0xffffff88
ja 0x5328ce
push edi
lea eax, [ebx + ebp]
push eax
lea eax, [esp + 0xb8]
push eax
call fcn.0052fa20
add esp, 0xc
cmp eax, 0xffffff88
ja 0x5328ce
mov edx, dword [esp + 0x64]
mov eax, edx
mov ecx, dword [esp + 0x60]
sub eax, ecx
cmp eax, 4
jb 0x5318fc
lea eax, [edx - 3]
cmp ecx, eax
jae 0x5318fc
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 0x53162c
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 0x5317e0
mov dword [esp + 0x18], 3
jmp 0x531800
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 0x53181b
mov dword [esp + 0x70], 3
jmp 0x53183b
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 0x531856
mov dword [esp + 0x6c], 3
jmp 0x531876
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 0x53188d
mov dword [esp + 0x10], 3
jmp 0x5318a9
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 0x531628
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 0x531977
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 0x53199c
mov eax, dword [esp + 0x3c]
cmp dword [esp + 0x30], eax
ja 0x53199c
mov eax, dword [esp + 0x60]
cmp dword [esp + 0x2c], eax
mov eax, dword [esp + 0x5c]
jbe 0x5319ac
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 0x531aff
mov edi, dword [esp + 0xc8]
nop word [eax + eax]
cmp edx, 0x20
jbe 0x5319e5
mov eax, 0x5a22e0
mov ebx, 3
mov dword [esp + 0x50], eax
jmp 0x531a5a
cmp ecx, dword [esp + 0x84]
jb 0x531a02
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 0x531a52
cmp ecx, eax
jne 0x531a16
cmp edx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov ebx, eax
jmp 0x531a5a
mov ebx, edx
mov dword [esp + 0x10], 0
shr ebx, 3
mov eax, ecx
sub eax, ebx
cmp eax, dword [esp + 0x80]
jae 0x531a41
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 0x531b74
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 0x5319d0
cmp edx, 0x20
jbe 0x531b0f
mov ecx, 0x5a22e0
mov dword [esp + 0x50], ecx
jmp 0x531b80
cmp ecx, dword [esp + 0x84]
jb 0x531b32
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 0x531b80
cmp ecx, eax
je 0x531b80
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 0x531b59
mov eax, ecx
sub eax, dword [esp + 0x80]
jmp 0x531b5d
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 0x531b80
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 0x531d17
mov ebx, dword [esp + 0xc8]
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x24]
cmp edx, 0x20
jbe 0x531bba
mov dword [esp + 0x50], 0x5a22e0
mov dword [esp + 0x24], 3
jmp 0x531c37
cmp ecx, dword [esp + 0x84]
jb 0x531bd7
mov eax, edx
mov dword [esp + 0x24], 0
shr eax, 3
sub ecx, eax
and edx, 7
jmp 0x531c2d
cmp ecx, dword [esp + 0x80]
jne 0x531bfb
mov eax, esi
cmp edx, 0x20
jae 0x531bf1
mov dword [esp + 0x24], 1
jmp 0x531c39
mov dword [esp + 0x24], 2
jmp 0x531c39
mov ebp, edx
mov dword [esp + 0x24], 0
shr ebp, 3
mov eax, ecx
sub eax, ebp
cmp eax, dword [esp + 0x80]
jae 0x531c26
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 0x531c8e
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 0x531ba3
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 0x531d17
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 0x531cc8
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 0x531d85
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 0x531d6b
movzx eax, byte [eax + 2]
add edx, eax
jmp 0x531d81
cmp edx, 0x20
jae 0x531d85
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 0x531eca
nop
cmp edi, 0x20
jbe 0x531db4
mov dword [esp + 0x54], 0x5a22e0
mov edx, 3
jmp 0x531e31
mov edx, dword [esp + 0x54]
cmp edx, dword [esp + 0x98]
jb 0x531dd9
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 0x531e2d
cmp edx, eax
jne 0x531ded
cmp edi, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov edx, eax
jmp 0x531e31
mov ebx, edi
mov dword [esp + 0x10], 0
shr ebx, 3
mov eax, edx
sub eax, ebx
cmp eax, dword [esp + 0x94]
jae 0x531e18
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 0x531f42
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 0x531da0
cmp edi, 0x20
jbe 0x531ed9
mov dword [esp + 0x54], 0x5a22e0
jmp 0x531f4e
mov ecx, dword [esp + 0x54]
cmp ecx, dword [esp + 0x98]
jb 0x531f00
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 0x531f4a
cmp ecx, eax
je 0x531f4a
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 0x531f27
mov eax, ecx
sub eax, dword [esp + 0x94]
jmp 0x531f2b
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 0x531f4a
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 0x5320cf
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 0x531f84
mov ebx, 0x5a22e0
mov dword [esp + 0x5c], 3
jmp 0x531ffd
cmp ebx, dword [esp + 0x98]
jb 0x531fa1
mov eax, edi
mov dword [esp + 0x5c], 0
shr eax, 3
sub ebx, eax
and edi, 7
jmp 0x531ff7
cmp ebx, dword [esp + 0x94]
jne 0x531fc5
mov edx, esi
cmp edi, 0x20
jae 0x531fbb
mov dword [esp + 0x5c], 1
jmp 0x531fff
mov dword [esp + 0x5c], 2
jmp 0x531fff
mov edx, edi
mov dword [esp + 0x5c], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0x94]
jae 0x531ff0
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 0x53204c
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 0x531f70
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 0x5320cb
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 0x532080
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 0x532133
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 0x532119
movzx eax, byte [eax + 2]
add edi, eax
jmp 0x53212f
cmp edi, 0x20
jae 0x532133
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 0x53225e
mov edx, dword [esp + 0x40]
cmp ebp, 0x20
jbe 0x532165
mov dword [esp + 0x58], 0x5a22e0
mov ebx, 3
jmp 0x5321c9
mov edx, dword [esp + 0x58]
cmp edx, dword [esp + 0xac]
jb 0x532180
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
xor ebx, ebx
jmp 0x5321bb
cmp edx, eax
jne 0x532192
mov edx, dword [esp + 0x40]
cmp ebp, 0x20
sbb ebx, ebx
add ebx, 2
jmp 0x5321c9
mov edi, ebp
mov eax, edx
shr edi, 3
xor ebx, ebx
sub eax, edi
cmp eax, dword [esp + 0xa8]
jae 0x5321b4
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 0x5322d6
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 0x532151
cmp ebp, 0x20
jbe 0x53226d
mov dword [esp + 0x58], 0x5a22e0
jmp 0x5322e6
mov ecx, dword [esp + 0x58]
cmp ecx, dword [esp + 0xac]
jb 0x532294
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 0x5322e2
cmp ecx, eax
je 0x5322e2
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 0x5322bb
mov eax, ecx
sub eax, dword [esp + 0xa8]
jmp 0x5322bf
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 0x5322e2
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 0x532458
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 0x53231c
mov ebx, 0x5a22e0
mov dword [esp + 0x3c], 3
jmp 0x532395
cmp ebx, dword [esp + 0xac]
jb 0x532339
mov eax, ebp
mov dword [esp + 0x3c], 0
shr eax, 3
sub ebx, eax
and ebp, 7
jmp 0x53238f
cmp ebx, dword [esp + 0xa8]
jne 0x53235d
mov edx, esi
cmp ebp, 0x20
jae 0x532353
mov dword [esp + 0x3c], 1
jmp 0x532397
mov dword [esp + 0x3c], 2
jmp 0x532397
mov edx, ebp
mov dword [esp + 0x3c], 0
shr edx, 3
mov eax, ebx
sub eax, edx
cmp eax, dword [esp + 0xa8]
jae 0x532388
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 0x5323e3
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 0x532308
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 0x532454
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 0x532410
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 0x5324bc
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 0x5324a2
movzx eax, byte [eax + 2]
add ebp, eax
jmp 0x5324b8
cmp ebp, 0x20
jae 0x5324bc
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 0x532600
cmp ebx, 0x20
jbe 0x5324ea
mov dword [esp + 0x44], 0x5a22e0
mov edx, 3
jmp 0x532567
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0xc0]
jb 0x53250f
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 0x532563
cmp edx, eax
jne 0x532523
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
mov edx, eax
jmp 0x532567
mov edi, ebx
mov dword [esp + 0x10], 0
shr edi, 3
mov eax, edx
sub eax, edi
cmp eax, dword [esp + 0xbc]
jae 0x53254e
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 0x532681
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 0x5324d6
cmp ebx, 0x20
jbe 0x53260f
mov dword [esp + 0x44], 0x5a22e0
jmp 0x53268d
mov ecx, dword [esp + 0x44]
cmp ecx, dword [esp + 0xc0]
jb 0x532632
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 0x532689
cmp ecx, eax
je 0x532689
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 0x53266a
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 0x532689
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 0x532689
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 0x532800
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 0x5326c4
mov edi, 0x5a22e0
mov dword [esp + 0x3c], 3
jmp 0x53273d
cmp edi, dword [esp + 0xc0]
jb 0x5326e1
mov eax, ebx
mov dword [esp + 0x3c], 0
shr eax, 3
sub edi, eax
and ebx, 7
jmp 0x532737
cmp edi, dword [esp + 0xbc]
jne 0x532705
mov edx, esi
cmp ebx, 0x20
jae 0x5326fb
mov dword [esp + 0x3c], 1
jmp 0x53273f
mov dword [esp + 0x3c], 2
jmp 0x53273f
mov edx, ebx
mov dword [esp + 0x3c], 0
shr edx, 3
mov eax, edi
sub eax, edx
cmp eax, dword [esp + 0xbc]
jae 0x532730
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 0x53278c
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 0x5326b0
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 0x5327fc
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 0x5327b5
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 0x532855
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 0x53283f
movzx eax, byte [esi + 2]
add ebx, eax
jmp 0x532855
cmp ebx, 0x20
jae 0x532855
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 0x53286c
cmp edx, 0x20
jne 0x53286c
lea esi, [edx - 0x1f]
jmp 0x53286e
xor esi, esi
mov eax, dword [esp + 0x54]
cmp eax, dword [esp + 0x94]
jne 0x532885
cmp edi, 0x20
jne 0x532885
lea edx, [edi - 0x1f]
jmp 0x532887
xor edx, edx
mov eax, dword [esp + 0x58]
cmp eax, dword [esp + 0xa8]
jne 0x53289e
cmp ebp, 0x20
jne 0x53289e
lea ecx, [ebp - 0x1f]
jmp 0x5328a0
xor ecx, ecx
mov eax, dword [esp + 0x44]
cmp eax, dword [esp + 0xbc]
jne 0x5328b7
cmp ebx, 0x20
jne 0x5328b7
lea eax, [ebx - 0x1f]
jmp 0x5328b9
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