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

Disassembly:
sub esp, 0x98
push ebp
mov ebp, dword [esp + 0xac]
cmp ebp, 0xa
jae 0x50b045
push 0xffffffffffffffec
pop eax
jmp 0x50c004
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.0050e0c3
movzx edi, ax
lea eax, [esi + 2]
push eax
mov dword [esp + 0xa4], edi
call fcn.0050e0c3
movzx eax, ax
mov dword [esp + 0x18], eax
lea eax, [esi + 4]
push eax
call fcn.0050e0c3
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.0050707e
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 0x50b42c
mov eax, dword [esp + 0x8c]
cmp dword [esp + 0x80], eax
ja 0x50b42c
cmp dword [esp + 0xb0], 6
jb 0x50b42c
push dword [esp + 0x9c]
lea eax, [esp + 0x70]
push dword [esp + 0x98]
push eax
call fcn.0050a6d6
add esp, 0xc
cmp eax, 0xffffff88
ja 0x50c001
push dword [esp + 0x10]
lea eax, [esp + 0x5c]
push dword [esp + 0xa4]
push eax
call fcn.0050a6d6
add esp, 0xc
cmp eax, 0xffffff88
ja 0x50c001
push dword [esp + 0x88]
lea eax, [esp + 0x48]
push dword [esp + 0x9c]
push eax
call fcn.0050a6d6
add esp, 0xc
cmp eax, 0xffffff88
ja 0x50c001
push dword [esp + 0x18]
mov eax, dword [esp + 0x8c]
add eax, dword [esp + 0x9c]
push eax
lea eax, [esp + 0x38]
push eax
call fcn.0050a6d6
add esp, 0xc
cmp eax, 0xffffff88
ja 0x50c001
mov eax, dword [esp + 0x8c]
mov ecx, dword [esp + 0x80]
sub eax, ecx
cmp eax, 4
jb 0x50b41a
cmp ecx, dword [esp + 0x90]
jae 0x50b41a
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.0050a7f9
xor esi, esi
test eax, eax
lea eax, [esp + 0x5c]
cmove esi, dword [esp + 0x18]
push eax
call fcn.0050a7f9
neg eax
sbb edi, edi
lea eax, [esp + 0x4c]
inc edi
push eax
and edi, esi
call fcn.0050a7f9
xor ebp, ebp
test eax, eax
lea eax, [esp + 0x3c]
push eax
cmove ebp, edi
call fcn.0050a7f9
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 0x50b224
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x28]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x2c]
cmp ebx, edx
ja 0x50b42c
cmp esi, dword [esp + 0x20]
ja 0x50b42c
cmp ebp, ecx
jbe 0x50b434
push 0xffffffffffffffec
pop eax
jmp 0x50c001
mov eax, edx
sub eax, ebx
push 0x20
pop esi
cmp eax, 3
jle 0x50b584
lea ebp, [edx - 3]
mov dword [esp + 0x94], ebp
mov ebp, dword [esp + 0x70]
cmp ebp, esi
jbe 0x50b463
mov dword [esp + 0x10], 3
jmp 0x50b4ee
mov ecx, dword [esp + 0x74]
cmp ecx, dword [esp + 0x7c]
jb 0x50b47e
lea eax, [esp + 0x6c]
push eax
call fcn.0050a7f9
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50b4ea
mov edx, dword [esp + 0x78]
cmp ecx, edx
jne 0x50b493
cmp ebp, esi
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x50b4ee
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 0x50b4b9
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50b4bd
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.005282e0
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 0x50b5f9
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 0x50b452
mov ebp, dword [esp + 0x70]
mov ecx, dword [esp + 0x74]
cmp ebp, esi
ja 0x50b5fd
cmp ecx, dword [esp + 0x7c]
jb 0x50b5a3
lea eax, [esp + 0x6c]
push eax
call fcn.0050a7f9
pop ecx
jmp 0x50b5f5
mov edx, dword [esp + 0x78]
cmp ecx, edx
je 0x50b601
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50b5c4
mov eax, ecx
sub eax, edx
jmp 0x50b5c8
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.005282e0
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 0x50b622
mov dword [esp + 0x10], 3
mov edx, eax
jmp 0x50b6b6
cmp ecx, dword [esp + 0x7c]
jb 0x50b639
lea eax, [esp + 0x6c]
push eax
call fcn.0050a7f9
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50b6ae
cmp ecx, edx
jne 0x50b657
mov edx, eax
cmp ebp, esi
jae 0x50b64d
mov dword [esp + 0x10], 1
jmp 0x50b6b6
mov dword [esp + 0x10], 2
jmp 0x50b6b6
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 0x50b67d
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50b681
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.005282e0
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 0x50b707
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 0x50b60f
cmp ebx, dword [esp + 0x2c]
jae 0x50b747
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 0x50b71b
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 0x50b88c
lea ebp, [ecx - 3]
mov dword [esp + 0x88], ebp
mov ebp, dword [esp + 0x5c]
cmp ebp, esi
jbe 0x50b77b
mov dword [esp + 0x10], 3
jmp 0x50b806
mov ecx, dword [esp + 0x60]
cmp ecx, dword [esp + 0x68]
jb 0x50b796
lea eax, [esp + 0x58]
push eax
call fcn.0050a7f9
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50b802
mov edx, dword [esp + 0x64]
cmp ecx, edx
jne 0x50b7ab
cmp ebp, esi
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x50b806
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 0x50b7d1
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50b7d5
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.005282e0
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 0x50b901
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 0x50b76a
mov ebp, dword [esp + 0x5c]
mov ecx, dword [esp + 0x60]
cmp ebp, esi
ja 0x50b905
cmp ecx, dword [esp + 0x68]
jb 0x50b8ab
lea eax, [esp + 0x58]
push eax
call fcn.0050a7f9
pop ecx
jmp 0x50b8fd
mov edx, dword [esp + 0x64]
cmp ecx, edx
je 0x50b909
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50b8cc
mov eax, ecx
sub eax, edx
jmp 0x50b8d0
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.005282e0
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 0x50b91a
mov dword [esp + 0x10], 3
jmp 0x50b9b1
cmp ecx, dword [esp + 0x68]
jb 0x50b931
lea eax, [esp + 0x58]
push eax
call fcn.0050a7f9
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50b9ad
cmp ecx, edx
jne 0x50b956
mov eax, dword [esp + 0x18]
mov dword [esp + 0x1c], eax
cmp ebp, esi
jae 0x50b94c
xor edx, edx
inc edx
mov dword [esp + 0x10], edx
mov ecx, edx
jmp 0x50b9bc
mov dword [esp + 0x10], 2
jmp 0x50b9b9
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 0x50b97c
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50b980
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.005282e0
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 0x50ba00
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 0x50b901
cmp ebx, dword [esp + 0x20]
jae 0x50ba3f
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 0x50ba13
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 0x50bb7f
lea ebp, [ecx - 3]
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x48]
cmp ebp, esi
jbe 0x50ba73
mov dword [esp + 0x20], 3
jmp 0x50baf8
mov ecx, dword [esp + 0x4c]
cmp ecx, dword [esp + 0x54]
jb 0x50ba8e
lea eax, [esp + 0x44]
push eax
call fcn.0050a7f9
pop ecx
mov dword [esp + 0x20], eax
jmp 0x50baf4
mov edx, dword [esp + 0x50]
cmp ecx, edx
jne 0x50baa3
cmp ebp, esi
sbb eax, eax
add eax, 2
mov dword [esp + 0x20], eax
jmp 0x50baf8
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 0x50bac9
mov eax, ecx
mov dword [esp + 0x20], 1
sub eax, edx
jmp 0x50bacd
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.005282e0
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 0x50bbee
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 0x50ba62
mov ebp, dword [esp + 0x48]
mov ecx, dword [esp + 0x4c]
cmp ebp, esi
ja 0x50bbf2
cmp ecx, dword [esp + 0x54]
jb 0x50bb9e
lea eax, [esp + 0x44]
push eax
call fcn.0050a7f9
pop ecx
jmp 0x50bbea
mov edx, dword [esp + 0x50]
cmp ecx, edx
je 0x50bbf6
mov eax, ebp
shr eax, 3
mov dword [esp + 0x14], eax
mov eax, ecx
sub eax, dword [esp + 0x14]
cmp eax, edx
jae 0x50bbbf
mov eax, ecx
sub eax, edx
jmp 0x50bbc3
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.005282e0
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 0x50bc07
mov dword [esp + 0x10], 3
jmp 0x50bca1
cmp ecx, dword [esp + 0x54]
jb 0x50bc1e
lea eax, [esp + 0x44]
push eax
call fcn.0050a7f9
pop ecx
mov dword [esp + 0x10], eax
jmp 0x50bc9d
cmp ecx, edx
jne 0x50bc46
mov ecx, dword [esp + 0x1c]
xor edx, edx
inc edx
push 0x1f
add ecx, edx
pop eax
cmp ebp, esi
jae 0x50bc3c
mov dword [esp + 0x10], 1
jmp 0x50bcad
mov dword [esp + 0x10], 2
jmp 0x50bcad
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 0x50bc6c
mov eax, ecx
mov dword [esp + 0x10], 1
sub eax, edx
jmp 0x50bc70
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.005282e0
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 0x50bd04
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 0x50bbee
cmp ebx, edx
jae 0x50bd39
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 0x50bd0c
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 0x50be47
cmp ebx, esi
jbe 0x50bd60
push 3
pop edi
jmp 0x50bdcd
cmp ebp, dword [esp + 0x40]
jb 0x50bd75
lea eax, [esp + 0x30]
push eax
call fcn.0050a7f9
pop ecx
mov edi, eax
jmp 0x50bdc1
mov ecx, dword [esp + 0x3c]
cmp ebp, ecx
jne 0x50bd86
cmp ebx, esi
sbb edi, edi
add edi, 2
jmp 0x50bdcd
mov edx, ebx
mov eax, ebp
shr edx, 3
xor edi, edi
sub eax, edx
cmp eax, ecx
jae 0x50bd9a
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.005282e0
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 0x50beae
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 0x50bd57
cmp ebx, esi
ja 0x50beb5
cmp ebp, dword [esp + 0x40]
jb 0x50be66
lea eax, [esp + 0x30]
push eax
call fcn.0050a7f9
pop ecx
mov ebp, dword [esp + 0x38]
mov ebx, dword [esp + 0x34]
jmp 0x50beb5
mov ecx, dword [esp + 0x3c]
cmp ebp, ecx
je 0x50beb9
mov edx, ebx
mov eax, ebp
shr edx, 3
sub eax, edx
cmp eax, ecx
jae 0x50be7f
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.005282e0
mov eax, dword [esp + 0x9c]
add esp, 0xc
mov dword [esp + 0x30], eax
jmp 0x50be5c
mov edi, dword [esp + 0xbc]
mov ecx, dword [esp + 0x3c]
cmp ebx, esi
jbe 0x50bec2
push 3
pop edx
jmp 0x50bf41
cmp ebp, dword [esp + 0x40]
jb 0x50bed7
lea eax, [esp + 0x30]
push eax
call fcn.0050a7f9
pop ecx
mov edx, eax
jmp 0x50bf39
cmp ebp, ecx
jne 0x50beea
cmp ebx, esi
sbb eax, eax
add eax, 2
mov dword [esp + 0x2c], eax
mov edx, eax
jmp 0x50bf41
and dword [esp + 0x2c], 0
mov edx, ebx
shr edx, 3
mov eax, ebp
sub eax, edx
cmp eax, ecx
jae 0x50bf08
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.005282e0
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 0x50bf8b
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 0x50beb5
mov esi, dword [esp + 0x24]
mov ebp, dword [esp + 0x8c]
cmp esi, ebp
jae 0x50bfc1
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 0x50bf9a
mov dword [esp + 0x34], ebx
lea eax, [esp + 0x30]
push eax
call fcn.0050a6bd
mov edx, eax
lea eax, [esp + 0x48]
push eax
call fcn.0050a6bd
and edx, eax
lea eax, [esp + 0x60]
push eax
call fcn.0050a6bd
and edx, eax
lea eax, [esp + 0x78]
push eax
call fcn.0050a6bd
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