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

Disassembly:
sub esp, 0x98
push ebp
mov ebp, dword [esp + 0xac]
cmp ebp, 0xa
jae 0x50a565
push 0xffffffffffffffec
pop eax
jmp 0x50b524
mov eax, dword [esp + 0xa4]
push ebx
mov ebx, dword [esp + 0xa4]
add eax, ebx
push esi
mov esi, dword [esp + 0xb0]
mov dword [esp + 0x88], eax
add eax, 0xfffffffd
push edi
push esi
mov dword [esp + 0x94], eax
call fcn.0050d5e3
movzx edi, ax
lea eax, [esi + 2]
push eax
mov dword [esp + 0xa4], edi
call fcn.0050d5e3
movzx eax, ax
mov dword [esp + 0x18], eax
lea eax, [esi + 4]
push eax
call fcn.0050d5e3
movzx ecx, ax
lea eax, [esi + 6]
mov dword [esp + 0xa0], eax
sub ebp, ecx
sub ebp, dword [esp + 0x1c]
add eax, edi
mov dword [esp + 0xac], eax
sub ebp, edi
add eax, dword [esp + 0x1c]
sub ebp, 6
mov edi, dword [esp + 0xc8]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0xbc]
add eax, 3
mov dword [esp + 0x94], ecx
shr eax, 2
mov dword [esp + 0x24], ebp
push edi
lea ecx, [eax + ebx]
lea edx, [ecx + eax]
mov dword [esp + 0x3c], ecx
add eax, edx
mov dword [esp + 0x30], edx
mov esi, ecx
mov dword [esp + 0x90], eax
mov ebp, edx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x38], ebp
mov dword [esp + 0x34], eax
call fcn.0050659e
shr eax, 0x10
add esp, 0x10
movzx eax, al
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0x14], 1
cmp dword [esp + 0x18], eax
ja 0x50a94c
mov eax, dword [esp + 0x8c]
cmp dword [esp + 0x80], eax
ja 0x50a94c
cmp dword [esp + 0xb0], 6
jb 0x50a94c
push dword [esp + 0x9c]
lea eax, [esp + 0x70]
push dword [esp + 0x98]
push eax
call fcn.00509bf6
add esp, 0xc
cmp eax, 0xffffff88
ja 0x50b521
push dword [esp + 0x10]
lea eax, [esp + 0x5c]
push dword [esp + 0xa4]
push eax
call fcn.00509bf6
add esp, 0xc
cmp eax, 0xffffff88
ja 0x50b521
push dword [esp + 0x88]
lea eax, [esp + 0x48]
push dword [esp + 0x9c]
push eax
call fcn.00509bf6
add esp, 0xc
cmp eax, 0xffffff88
ja 0x50b521
push dword [esp + 0x18]
mov eax, dword [esp + 0x8c]
add eax, dword [esp + 0x9c]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.00509bf6
add esp, 0xc
cmp eax, 0xffffff88
ja 0x50b521
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x80]
sub eax, ecx
cmp eax, 4
jb 0x50a93a
cmp ecx, dword [esp + 0x90]
jae 0x50a93a
mov eax, dword [esp + 0x84]
neg eax
and eax, 0x1f
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x70]
mov edx, dword [esp + 0x6c]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x5c]
and ecx, 0x1f
mov esi, dword [esp + 0x34]
mov al, byte [edi + edx*2 + 5]
movzx ebp, byte [edi + edx*2 + 4]
add ebp, dword [esp + 0x70]
mov edx, dword [esp + 0x58]
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x1c]
mov byte [ebx], al
inc ebx
mov dword [esp + 0xac], ebx
movzx ebx, byte [edi + edx*2 + 4]
mov al, byte [edi + edx*2 + 5]
add ebx, dword [esp + 0x5c]
mov byte [ecx], al
inc ecx
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x48]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x28]
mov al, byte [eax + edx*2 + 5]
movzx edi, byte [edi + edx*2 + 4]
add edi, dword [esp + 0x48]
mov byte [ecx], al
inc ecx
mov edx, dword [esp + 0x30]
mov dword [esp + 0x28], ecx
mov ecx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0xbc]
movzx eax, byte [ecx + edx*2 + 4]
add esi, eax
mov al, byte [ecx + edx*2 + 5]
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x6c]
mov byte [ecx], al
inc ecx
mov eax, dword [esp + 0xbc]
mov dword [esp + 0x24], ecx
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0xac]
movzx eax, byte [eax + edx*2 + 4]
add eax, ebp
mov ebp, dword [esp + 0xbc]
mov dword [esp + 0x70], eax
mov al, byte [ebp + edx*2 + 5]
mov edx, dword [esp + 0x58]
mov byte [ecx], al
inc ecx
mov dword [esp + 0xac], ecx
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x1c]
movzx eax, byte [ebp + edx*2 + 4]
add eax, ebx
mov dword [esp + 0x5c], eax
mov al, byte [ebp + edx*2 + 5]
mov edx, dword [esp + 0x44]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x1c], ecx
mov ecx, edi
and ecx, 0x1f
mov ebx, dword [esp + 0x24]
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
mov ecx, dword [esp + 0x28]
movzx eax, byte [ebp + edx*2 + 4]
add eax, edi
mov dword [esp + 0x48], eax
mov al, byte [ebp + edx*2 + 5]
mov edx, dword [esp + 0x30]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x28], ecx
mov ecx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
shr edx, cl
movzx eax, byte [ebp + edx*2 + 4]
add eax, esi
mov dword [esp + 0x34], eax
mov al, byte [ebp + edx*2 + 5]
mov byte [ebx], al
lea eax, [esp + 0x6c]
inc ebx
push eax
mov dword [esp + 0x28], ebx
call fcn.00509d19
xor esi, esi
test eax, eax
lea eax, [esp + 0x5c]
cmove esi, dword [esp + 0x18]
push eax
call fcn.00509d19
neg eax
sbb edi, edi
lea eax, [esp + 0x4c]
inc edi
push eax
and edi, esi
call fcn.00509d19
xor ebp, ebp
test eax, eax
lea eax, [esp + 0x3c]
push eax
cmove ebp, edi
call fcn.00509d19
mov edi, dword [esp + 0xcc]
add esp, 0x10
neg eax
sbb eax, eax
inc eax
and ebp, eax
cmp ebx, dword [esp + 0x90]
mov ebx, dword [esp + 0xac]
sbb eax, eax
mov dword [esp + 0x14], ebp
test ebp, eax
mov eax, dword [esp + 0x18]
jne 0x50a744
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x2c]
cmp ebx, edx
ja 0x50a94c
cmp esi, dword [esp + 0x20]
ja 0x50a94c
cmp ebp, ecx
jbe 0x50a954
push 0xffffffffffffffec
pop eax
jmp 0x50b521
mov eax, edx
sub eax, ebx
push 0x20
pop esi
cmp eax, 3
jle 0x50aaa4
lea ebp, [edx - 3]
mov dword [esp + 0x94], ebp
mov ebp, dword [esp + 0x70]
cmp ebp, esi
jbe 0x50a983
mov dword [esp + 0x10], 3
jmp 0x50aa0e
mov ecx, dword [esp + 0x74]
cmp ecx, dword [esp + 0x7c]
jb 0x50a99e
lea eax, [esp + 0x6c]
push eax
call fcn.00509d19
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50aa0a
mov edx, dword [esp + 0x78]
cmp ecx, edx
jne 0x50a9b3
cmp ebp, esi
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x50aa0e
and dword [esp + 0x10], 0
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50a9d9
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50a9dd
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x7c], ecx
add ebp, eax
lea eax, [esp + 0xa8]
push eax
mov dword [esp + 0x7c], ebp
call fcn.00527800
mov eax, dword [esp + 0xac]
add esp, 0xc
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x70]
cmp ebx, dword [esp + 0x94]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x50ab19
mov edi, dword [esp + 0x84]
mov ecx, ebp
mov ebx, dword [esp + 0x6c]
and ecx, 0x1f
neg edi
mov edx, ebx
shl edx, cl
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0xbc]
push 0x20
movzx esi, byte [ecx + edx*2 + 4]
mov al, byte [ecx + edx*2 + 5]
add esi, ebp
mov ecx, dword [esp + 0xb0]
mov byte [ecx], al
inc ecx
mov dword [esp + 0xb0], ecx
mov ecx, esi
and ecx, 0x1f
shl ebx, cl
mov ecx, edi
mov edi, dword [esp + 0xc0]
shr ebx, cl
movzx ebp, byte [edi + ebx*2 + 4]
mov al, byte [edi + ebx*2 + 5]
add ebp, esi
mov ebx, dword [esp + 0xb0]
mov dword [esp + 0x74], ebp
pop esi
mov byte [ebx], al
inc ebx
mov dword [esp + 0xac], ebx
jmp 0x50a972
mov ebp, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
cmp ebp, esi
ja 0x50ab1d
cmp ecx, dword [esp + 0x7c]
jb 0x50aac3
lea eax, [esp + 0x6c]
push eax
call fcn.00509d19
pop ecx
jmp 0x50ab15
mov edx, dword [esp + 0x78]
cmp ecx, edx
je 0x50ab21
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50aae4
mov eax, ecx
sub eax, edx
jmp 0x50aae8
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x7c], ecx
add ebp, eax
lea eax, [esp + 0x9c]
push eax
mov dword [esp + 0x7c], ebp
call fcn.00527800
mov eax, dword [esp + 0xa0]
add esp, 0xc
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
mov edx, dword [esp + 0x78]
push 0x1f
pop eax
sub eax, dword [esp + 0x84]
mov dword [esp + 0x18], eax
cmp ebp, esi
jbe 0x50ab42
mov dword [esp + 0x10], 3
mov edx, eax
jmp 0x50abd6
cmp ecx, dword [esp + 0x7c]
jb 0x50ab59
lea eax, [esp + 0x6c]
push eax
call fcn.00509d19
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50abce
cmp ecx, edx
jne 0x50ab77
mov edx, eax
cmp ebp, esi
jae 0x50ab6d
mov dword [esp + 0x10], 1
jmp 0x50abd6
mov dword [esp + 0x10], 2
jmp 0x50abd6
and dword [esp + 0x10], 0
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50ab9d
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50aba1
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x7c], ecx
add ebp, eax
lea eax, [esp + 0xa4]
push eax
mov dword [esp + 0x7c], ebp
call fcn.00527800
mov eax, dword [esp + 0xa8]
add esp, 0xc
mov dword [esp + 0x6c], eax
mov ebp, dword [esp + 0x70]
mov edx, dword [esp + 0x18]
cmp ebx, dword [esp + 0x2c]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x50ac27
mov edx, dword [esp + 0x6c]
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x84]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x74]
movzx eax, byte [edi + edx*2 + 4]
add ebp, eax
mov al, byte [edi + edx*2 + 5]
mov edx, dword [esp + 0x78]
mov byte [ebx], al
inc ebx
mov eax, dword [esp + 0x18]
mov dword [esp + 0x70], ebp
jmp 0x50ab2f
cmp ebx, dword [esp + 0x2c]
jae 0x50ac67
mov esi, dword [esp + 0x2c]
lea eax, [edx + 1]
and eax, 0x1f
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x6c]
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [edi + edx*2 + 4]
add ebp, eax
mov al, byte [edi + edx*2 + 5]
mov byte [ebx], al
inc ebx
mov eax, dword [esp + 0x14]
cmp ebx, esi
jb 0x50ac3b
push 0x20
mov dword [esp + 0x74], ebp
pop esi
mov ecx, dword [esp + 0x20]
mov eax, ecx
mov ebx, dword [esp + 0x1c]
sub eax, ebx
cmp eax, 3
jle 0x50adac
lea ebp, [ecx - 3]
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x5c]
cmp ebp, esi
jbe 0x50ac9b
mov dword [esp + 0x10], 3
jmp 0x50ad26
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x68]
jb 0x50acb6
lea eax, [esp + 0x58]
push eax
call fcn.00509d19
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50ad22
mov edx, dword [esp + 0x64]
cmp ecx, edx
jne 0x50accb
cmp ebp, esi
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x50ad26
and dword [esp + 0x10], 0
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50acf1
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50acf5
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x68], ecx
add ebp, eax
lea eax, [esp + 0xa0]
push eax
mov dword [esp + 0x68], ebp
call fcn.00527800
mov eax, dword [esp + 0xa4]
add esp, 0xc
mov dword [esp + 0x58], eax
mov ebp, dword [esp + 0x5c]
cmp ebx, dword [esp + 0x88]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x50ae21
mov edi, dword [esp + 0x18]
mov ecx, ebp
mov ebx, dword [esp + 0x58]
and ecx, 0x1f
inc edi
mov edx, ebx
shl edx, cl
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0xbc]
push 0x20
movzx esi, byte [ecx + edx*2 + 4]
mov al, byte [ecx + edx*2 + 5]
add esi, ebp
mov ecx, dword [esp + 0x20]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x20], ecx
mov ecx, esi
and ecx, 0x1f
shl ebx, cl
mov ecx, edi
mov edi, dword [esp + 0xc0]
shr ebx, cl
movzx ebp, byte [edi + ebx*2 + 4]
mov al, byte [edi + ebx*2 + 5]
add ebp, esi
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x60], ebp
pop esi
mov byte [ebx], al
inc ebx
mov dword [esp + 0x1c], ebx
jmp 0x50ac8a
mov ebp, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
cmp ebp, esi
ja 0x50ae25
cmp ecx, dword [esp + 0x68]
jb 0x50adcb
lea eax, [esp + 0x58]
push eax
call fcn.00509d19
pop ecx
jmp 0x50ae1d
mov edx, dword [esp + 0x64]
cmp ecx, edx
je 0x50ae29
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50adec
mov eax, ecx
sub eax, edx
jmp 0x50adf0
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x68], ecx
add ebp, eax
lea eax, [esp + 0x90]
push eax
mov dword [esp + 0x68], ebp
call fcn.00527800
mov eax, dword [esp + 0x94]
add esp, 0xc
mov dword [esp + 0x58], eax
mov ebp, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
mov edx, dword [esp + 0x64]
cmp ebp, esi
jbe 0x50ae3a
mov dword [esp + 0x10], 3
jmp 0x50aed1
cmp ecx, dword [esp + 0x68]
jb 0x50ae51
lea eax, [esp + 0x58]
push eax
call fcn.00509d19
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50aecd
cmp ecx, edx
jne 0x50ae76
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
cmp ebp, esi
jae 0x50ae6c
xor edx, edx
inc edx
mov dword [esp + 0x10], edx
mov ecx, edx
jmp 0x50aedc
mov dword [esp + 0x10], 2
jmp 0x50aed9
and dword [esp + 0x10], 0
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50ae9c
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50aea0
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x68], ecx
add ebp, eax
lea eax, [esp + 0x8c]
push eax
mov dword [esp + 0x68], ebp
call fcn.00527800
mov eax, dword [esp + 0x90]
add esp, 0xc
mov dword [esp + 0x58], eax
mov ebp, dword [esp + 0x5c]
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
xor ecx, ecx
inc ecx
cmp ebx, dword [esp + 0x20]
lea edx, [eax + ecx]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x50af20
mov edx, dword [esp + 0x58]
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x18]
inc ecx
and ecx, 0x1f
shr edx, cl
movzx eax, byte [edi + edx*2 + 4]
add ebp, eax
mov al, byte [edi + edx*2 + 5]
mov byte [ebx], al
inc ebx
mov dword [esp + 0x5c], ebp
jmp 0x50ae21
cmp ebx, dword [esp + 0x20]
jae 0x50af5f
mov esi, dword [esp + 0x20]
mov eax, edx
and eax, 0x1f
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x58]
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
movzx eax, byte [edi + edx*2 + 4]
add ebp, eax
mov al, byte [edi + edx*2 + 5]
mov byte [ebx], al
inc ebx
mov eax, dword [esp + 0x14]
cmp ebx, esi
jb 0x50af33
push 0x20
mov dword [esp + 0x60], ebp
pop esi
mov ecx, dword [esp + 0x80]
mov eax, ecx
mov ebx, dword [esp + 0x28]
sub eax, ebx
cmp eax, 3
jle 0x50b09f
lea ebp, [ecx - 3]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x48]
cmp ebp, esi
jbe 0x50af93
mov dword [esp + 0x20], 3
jmp 0x50b018
mov ecx, dword [esp + 0x4c]
cmp ecx, dword [esp + 0x54]
jb 0x50afae
lea eax, [esp + 0x44]
push eax
call fcn.00509d19
pop ecx
mov dword [esp + 0x20], eax
jmp 0x50b014
mov edx, dword [esp + 0x50]
cmp ecx, edx
jne 0x50afc3
cmp ebp, esi
sbb eax, eax
add eax, 2
mov dword [esp + 0x20], eax
jmp 0x50b018
and dword [esp + 0x20], 0
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50afe9
mov eax, ecx
mov dword [esp + 0x20], 1
sub eax, edx
jmp 0x50afed
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x54], ecx
add ebp, eax
lea eax, [esp + 0x20]
push eax
mov dword [esp + 0x54], ebp
call fcn.00527800
mov eax, dword [esp + 0x24]
add esp, 0xc
mov dword [esp + 0x44], eax
mov ebp, dword [esp + 0x48]
cmp ebx, dword [esp + 0x2c]
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x20], eax
sete al
test eax, ecx
je 0x50b10e
mov edi, dword [esp + 0x1c]
xor edx, edx
mov ebx, dword [esp + 0x44]
inc edx
add edi, edx
mov ecx, ebp
and ecx, 0x1f
mov edx, ebx
shl edx, cl
and edi, 0x1f
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0xbc]
push 0x20
movzx esi, byte [ecx + edx*2 + 4]
mov al, byte [ecx + edx*2 + 5]
add esi, ebp
mov ecx, dword [esp + 0x2c]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x2c], ecx
mov ecx, esi
and ecx, 0x1f
shl ebx, cl
mov ecx, edi
mov edi, dword [esp + 0xc0]
shr ebx, cl
movzx ebp, byte [edi + ebx*2 + 4]
mov al, byte [edi + ebx*2 + 5]
add ebp, esi
mov ebx, dword [esp + 0x2c]
mov dword [esp + 0x4c], ebp
pop esi
mov byte [ebx], al
inc ebx
mov dword [esp + 0x28], ebx
jmp 0x50af82
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
cmp ebp, esi
ja 0x50b112
cmp ecx, dword [esp + 0x54]
jb 0x50b0be
lea eax, [esp + 0x44]
push eax
call fcn.00509d19
pop ecx
jmp 0x50b10a
mov edx, dword [esp + 0x50]
cmp ecx, edx
je 0x50b116
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50b0df
mov eax, ecx
sub eax, edx
jmp 0x50b0e3
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x54], ecx
add ebp, eax
lea eax, [esp + 0x30]
push eax
mov dword [esp + 0x54], ebp
call fcn.00527800
mov eax, dword [esp + 0x34]
add esp, 0xc
mov dword [esp + 0x44], eax
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x50]
cmp ebp, esi
jbe 0x50b127
mov dword [esp + 0x10], 3
jmp 0x50b1c1
cmp ecx, dword [esp + 0x54]
jb 0x50b13e
lea eax, [esp + 0x44]
push eax
call fcn.00509d19
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50b1bd
cmp ecx, edx
jne 0x50b166
mov ecx, dword [esp + 0x1c]
xor edx, edx
inc edx
push 0x1f
add ecx, edx
pop eax
cmp ebp, esi
jae 0x50b15c
mov dword [esp + 0x10], 1
jmp 0x50b1cd
mov dword [esp + 0x10], 2
jmp 0x50b1cd
and dword [esp + 0x10], 0
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50b18c
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50b190
mov eax, dword [esp + 0x14]
sub ecx, eax
imul eax, eax, 0xfffffff8
push 4
push ecx
mov dword [esp + 0x54], ecx
add ebp, eax
lea eax, [esp + 0xac]
push eax
mov dword [esp + 0x54], ebp
call fcn.00527800
mov eax, dword [esp + 0xb0]
add esp, 0xc
mov dword [esp + 0x44], eax
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x1c]
xor edx, edx
inc edx
push 0x1f
add ecx, edx
pop eax
mov edx, dword [esp + 0x80]
and eax, ecx
cmp ebx, edx
mov dword [esp + 0x20], eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x50b224
mov edx, dword [esp + 0x44]
mov ecx, ebp
and ecx, 0x1f
xor edi, edi
shl edx, cl
inc edi
mov ecx, dword [esp + 0x1c]
add ecx, edi
mov edi, dword [esp + 0xbc]
and ecx, 0x1f
shr edx, cl
movzx eax, byte [edi + edx*2 + 4]
add ebp, eax
mov al, byte [edi + edx*2 + 5]
mov byte [ebx], al
inc ebx
mov dword [esp + 0x48], ebp
jmp 0x50b10e
cmp ebx, edx
jae 0x50b259
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x44]
mov ecx, ebp
and ecx, 0x1f
shl edx, cl
mov ecx, esi
shr edx, cl
movzx eax, byte [edi + edx*2 + 4]
add ebp, eax
mov al, byte [edi + edx*2 + 5]
mov byte [ebx], al
inc ebx
cmp ebx, dword [esp + 0x80]
jb 0x50b22c
push 0x20
mov dword [esp + 0x4c], ebp
pop esi
mov eax, dword [esp + 0x8c]
mov edx, dword [esp + 0x24]
sub eax, edx
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x38]
cmp eax, 3
jle 0x50b367
cmp ebx, esi
jbe 0x50b280
push 3
pop edi
jmp 0x50b2ed
cmp ebp, dword [esp + 0x40]
jb 0x50b295
lea eax, [esp + 0x30]
push eax
call fcn.00509d19
pop ecx
mov edi, eax
jmp 0x50b2e1
mov ecx, dword [esp + 0x3c]
cmp ebp, ecx
jne 0x50b2a6
cmp ebx, esi
sbb edi, edi
add edi, 2
jmp 0x50b2ed
mov edx, ebx
mov eax, ebp
shr edx, 3
xor edi, edi
sub eax, edx
cmp eax, ecx
jae 0x50b2ba
mov edx, ebp
sub edx, ecx
inc edi
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0x40], ebp
add ebx, eax
lea eax, [esp + 0x1c]
push eax
mov dword [esp + 0x40], ebx
call fcn.00527800
mov eax, dword [esp + 0x20]
add esp, 0xc
mov dword [esp + 0x30], eax
mov edx, dword [esp + 0x24]
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x38]
cmp edx, dword [esp + 0x90]
sbb ecx, ecx
xor eax, eax
neg ecx
test edi, edi
sete al
test eax, ecx
je 0x50b3ce
mov edi, dword [esp + 0x30]
mov ecx, ebx
and ecx, 0x1f
mov edx, edi
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0xbc]
push 0x20
movzx esi, byte [ecx + edx*2 + 4]
mov al, byte [ecx + edx*2 + 5]
add esi, ebx
mov edx, dword [esp + 0x28]
mov ecx, esi
and ecx, 0x1f
shl edi, cl
mov ecx, dword [esp + 0x24]
mov byte [edx], al
mov eax, dword [esp + 0xc0]
shr edi, cl
movzx ebx, byte [eax + edi*2 + 4]
mov al, byte [eax + edi*2 + 5]
add ebx, esi
mov byte [edx + 1], al
add edx, 2
mov dword [esp + 0x38], ebx
mov dword [esp + 0x28], edx
pop esi
jmp 0x50b277
cmp ebx, esi
ja 0x50b3d5
cmp ebp, dword [esp + 0x40]
jb 0x50b386
lea eax, [esp + 0x30]
push eax
call fcn.00509d19
pop ecx
mov ebp, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
jmp 0x50b3d5
mov ecx, dword [esp + 0x3c]
cmp ebp, ecx
je 0x50b3d9
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x50b39f
mov edx, ebp
sub edx, ecx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0x40], ebp
add ebx, eax
lea eax, [esp + 0x98]
push eax
mov dword [esp + 0x40], ebx
call fcn.00527800
mov eax, dword [esp + 0x9c]
add esp, 0xc
mov dword [esp + 0x30], eax
jmp 0x50b37c
mov edi, dword [esp + 0xbc]
mov ecx, dword [esp + 0x3c]
cmp ebx, esi
jbe 0x50b3e2
push 3
pop edx
jmp 0x50b461
cmp ebp, dword [esp + 0x40]
jb 0x50b3f7
lea eax, [esp + 0x30]
push eax
call fcn.00509d19
pop ecx
mov edx, eax
jmp 0x50b459
cmp ebp, ecx
jne 0x50b40a
cmp ebx, esi
sbb eax, eax
add eax, 2
mov dword [esp + 0x2c], eax
mov edx, eax
jmp 0x50b461
and dword [esp + 0x2c], 0
mov edx, ebx
shr edx, 3
mov eax, ebp
sub eax, edx
cmp eax, ecx
jae 0x50b428
mov edx, ebp
mov dword [esp + 0x2c], 1
sub edx, ecx
imul eax, edx, 0xfffffff8
sub ebp, edx
push 4
push ebp
mov dword [esp + 0x40], ebp
add ebx, eax
lea eax, [esp + 0x88]
push eax
mov dword [esp + 0x40], ebx
call fcn.00527800
mov eax, dword [esp + 0x8c]
add esp, 0xc
mov edx, dword [esp + 0x2c]
mov dword [esp + 0x30], eax
mov ebx, dword [esp + 0x34]
mov ebp, dword [esp + 0x38]
mov eax, dword [esp + 0x24]
cmp eax, dword [esp + 0x8c]
sbb ecx, ecx
xor eax, eax
neg ecx
test edx, edx
sete al
test eax, ecx
je 0x50b4ab
mov edx, dword [esp + 0x30]
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
mov ecx, dword [esp + 0x24]
movzx eax, byte [edi + edx*2 + 4]
add ebx, eax
mov al, byte [edi + edx*2 + 5]
mov byte [ecx], al
inc ecx
mov dword [esp + 0x34], ebx
mov dword [esp + 0x24], ecx
jmp 0x50b3d5
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x8c]
cmp esi, ebp
jae 0x50b4e1
mov edx, dword [esp + 0x30]
mov ecx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x20]
shr edx, cl
movzx eax, byte [edi + edx*2 + 4]
add ebx, eax
mov al, byte [edi + edx*2 + 5]
mov byte [esi], al
inc esi
cmp esi, ebp
jb 0x50b4ba
mov dword [esp + 0x34], ebx
lea eax, [esp + 0x30]
push eax
call fcn.00509bdd
mov edx, eax
lea eax, [esp + 0x48]
push eax
call fcn.00509bdd
and edx, eax
lea eax, [esp + 0x60]
push eax
call fcn.00509bdd
and edx, eax
lea eax, [esp + 0x78]
push eax
call fcn.00509bdd
add esp, 0x10
test eax, edx
mov eax, dword [esp + 0xb0]
push 0xffffffffffffffec
pop ecx
cmove eax, ecx
pop edi
pop esi
pop ebx
pop ebp
add esp, 0x98
ret