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

Disassembly:
sub esp, 0x8c
push ebx
push ebp
mov ebp, dword [esp + 0xa4]
push esi
push edi
cmp ebp, 0xa
jb 0x16abcc8
mov ecx, dword [esp + 0xa8]
mov edi, ebp
mov esi, dword [esp + 0xa0]
mov eax, dword [esp + 0xa4]
add eax, esi
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x8c], eax
movzx eax, word [ecx]
mov dword [esp + 0x18], eax
movzx eax, word [ecx + 2]
lea ebx, [edx + 4]
mov dword [esp + 0x14], eax
movzx eax, word [ecx + 4]
add ecx, 6
sub edi, eax
mov dword [esp + 0x94], eax
sub edi, dword [esp + 0x14]
mov eax, dword [esp + 0x18]
sub edi, eax
add eax, ecx
mov dword [esp + 0x98], ecx
mov dword [esp + 0x2c], eax
sub edi, 6
add eax, dword [esp + 0x14]
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xa4]
add eax, 3
mov dword [esp + 0x20], ebx
shr eax, 2
lea ecx, [eax + esi]
lea ebp, [ecx + eax]
mov dword [esp + 0x90], ecx
add eax, ebp
mov dword [esp + 0x10], ebp
mov dword [esp + 0x60], eax
mov ebp, ecx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x60]
mov dword [esp + 0x24], eax
mov eax, dword [edx]
shr eax, 0x10
movzx eax, al
mov dword [esp + 0x28], ebp
mov dword [esp + 0x30], ecx
mov dword [esp + 0x1c], eax
cmp edi, dword [esp + 0xac]
ja 0x16abcc8
mov eax, dword [esp + 0x18]
push eax
push dword [esp + 0x9c]
lea eax, [esp + 0x40]
push eax
call fcn.016a70d0
add esp, 0xc
cmp eax, 0xffffff88
ja 0x16abccd
push dword [esp + 0x14]
lea eax, [esp + 0x7c]
push dword [esp + 0x30]
push eax
call fcn.016a70d0
add esp, 0xc
cmp eax, 0xffffff88
ja 0x16abccd
push dword [esp + 0x94]
lea eax, [esp + 0x68]
push dword [esp + 0x38]
push eax
call fcn.016a70d0
add esp, 0xc
cmp eax, 0xffffff88
ja 0x16abccd
mov eax, dword [esp + 0x94]
add eax, dword [esp + 0x34]
push edi
push eax
lea eax, [esp + 0x54]
push eax
call fcn.016a70d0
add esp, 0xc
cmp eax, 0xffffff88
ja 0x16abccd
lea eax, [esp + 0x4c]
push eax
call fcn.016a7200
mov edi, eax
lea eax, [esp + 0x68]
push eax
call fcn.016a7200
or edi, eax
lea eax, [esp + 0x80]
push eax
call fcn.016a7200
or edi, eax
lea eax, [esp + 0x44]
push eax
call fcn.016a7200
mov ecx, dword [esp + 0x70]
or edi, eax
mov eax, dword [esp + 0x9c]
add esp, 0x10
neg edi
sbb edi, edi
add eax, 0xfffffffd
inc edi
cmp ecx, eax
sbb eax, eax
neg eax
test eax, edi
je 0x16ab32a
mov eax, dword [esp + 0x1c]
neg eax
and eax, 0x1f
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
and ecx, 0x1f
shl edx, cl
mov ecx, eax
shr edx, cl
mov ecx, dword [esp + 0x7c]
and ecx, 0x1f
mov edi, dword [esp + 0x30]
movzx eax, word [ebx + edx*4]
mov word [esi], ax
movzx eax, byte [ebx + edx*4 + 2]
add eax, dword [esp + 0x3c]
mov dword [esp + 0x2c], eax
movzx eax, byte [ebx + edx*4 + 3]
mov edx, dword [esp + 0x78]
add esi, eax
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x68]
and ecx, 0x1f
movzx eax, word [ebx + edx*4]
mov word [ebp], ax
movzx eax, byte [ebx + edx*4 + 3]
movzx ebp, byte [ebx + edx*4 + 2]
add dword [esp + 0x28], eax
mov edx, dword [esp + 0x64]
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x24]
add ebp, dword [esp + 0x7c]
movzx eax, word [ebx + edx*4]
mov word [ecx], ax
movzx ebx, byte [ebx + edx*4 + 2]
mov ecx, dword [esp + 0x20]
add ebx, dword [esp + 0x68]
movzx eax, byte [ecx + edx*4 + 3]
add dword [esp + 0x24], eax
mov ecx, dword [esp + 0x50]
mov edx, dword [esp + 0x4c]
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x20]
movzx eax, word [ecx + edx*4]
mov word [edi], ax
movzx eax, byte [ecx + edx*4 + 2]
mov edi, dword [esp + 0x50]
add edi, eax
movzx eax, byte [ecx + edx*4 + 3]
add dword [esp + 0x30], eax
mov edx, dword [esp + 0x2c]
mov ecx, edx
mov eax, dword [esp + 0x38]
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x14]
shr eax, cl
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
movzx eax, word [ecx + eax*4]
mov ecx, dword [esp + 0x2c]
mov word [esi], ax
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + ecx*4 + 2]
add eax, edx
mov edx, dword [esp + 0x78]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x20]
movzx eax, byte [eax + ecx*4 + 3]
mov ecx, ebp
and ecx, 0x1f
add esi, eax
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x20]
movzx eax, word [ecx + edx*4]
mov ecx, dword [esp + 0x28]
mov word [ecx], ax
mov ecx, dword [esp + 0x20]
movzx eax, byte [ecx + edx*4 + 2]
add eax, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x7c], eax
movzx eax, byte [ecx + edx*4 + 3]
mov ecx, ebx
add dword [esp + 0x28], eax
and ecx, 0x1f
mov edx, dword [esp + 0x64]
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
mov ecx, dword [esp + 0x20]
movzx eax, word [ecx + edx*4]
mov word [ebp], ax
movzx eax, byte [ecx + edx*4 + 2]
mov ebp, dword [esp + 0x30]
add eax, ebx
mov ebx, ecx
mov dword [esp + 0x68], eax
mov ecx, edi
and ecx, 0x1f
movzx eax, byte [ebx + edx*4 + 3]
mov edx, dword [esp + 0x4c]
add dword [esp + 0x24], eax
shl edx, cl
mov ecx, dword [esp + 0x14]
shr edx, cl
movzx eax, word [ebx + edx*4]
mov word [ebp], ax
movzx eax, byte [ebx + edx*4 + 2]
add eax, edi
mov dword [esp + 0x50], eax
movzx eax, byte [ebx + edx*4 + 3]
add ebp, eax
lea eax, [esp + 0x4c]
push eax
mov dword [esp + 0x34], ebp
call fcn.016a7200
mov edi, eax
lea eax, [esp + 0x68]
push eax
call fcn.016a7200
or edi, eax
lea eax, [esp + 0x80]
push eax
call fcn.016a7200
or edi, eax
lea eax, [esp + 0x44]
push eax
call fcn.016a7200
or edi, eax
add esp, 0x10
mov eax, dword [esp + 0x8c]
neg edi
sbb edi, edi
add eax, 0xfffffffd
inc edi
cmp ebp, eax
mov ebp, dword [esp + 0x28]
sbb eax, eax
neg eax
test eax, edi
mov eax, dword [esp + 0x14]
jne 0x16ab124
mov ecx, dword [esp + 0x60]
mov eax, dword [esp + 0x90]
cmp esi, eax
ja 0x16abcc8
cmp ebp, dword [esp + 0x10]
ja 0x16abcc8
cmp dword [esp + 0x24], ecx
ja 0x16abcc8
mov ebp, dword [esp + 0x3c]
lea ecx, [eax - 3]
mov dword [esp + 0x34], ecx
mov ebx, dword [esp + 0x44]
mov edx, dword [esp + 0x40]
cmp ebp, 0x20
jbe 0x16ab370
mov ebx, dword [esp + 0x38]
mov edi, 3
jmp 0x16ab3c7
cmp edx, dword [esp + 0x48]
jb 0x16ab384
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
xor edi, edi
jmp 0x16ab3b9
cmp edx, ebx
jne 0x16ab396
mov ebx, dword [esp + 0x38]
cmp ebp, 0x20
sbb edi, edi
add edi, 2
jmp 0x16ab3c7
mov ecx, ebp
mov eax, edx
shr ecx, 3
xor edi, edi
sub eax, ecx
cmp eax, ebx
jae 0x16ab3ae
mov ecx, edx
mov edi, 1
sub ecx, ebx
imul eax, ecx, 0xfffffff8
sub edx, ecx
mov ecx, dword [esp + 0x34]
add ebp, eax
mov ebx, dword [edx]
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edx
cmp esi, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
test edi, edi
sete al
test eax, ecx
je 0x16ab43e
mov ebx, dword [esp + 0x1c]
mov ecx, ebp
mov edx, dword [esp + 0x38]
and ecx, 0x1f
shl edx, cl
neg ebx
and ebx, 0x1f
mov ecx, ebx
shr edx, cl
mov ecx, dword [esp + 0x20]
movzx eax, word [ecx + edx*4]
mov word [esi], ax
movzx edi, byte [ecx + edx*4 + 2]
movzx eax, byte [ecx + edx*4 + 3]
add edi, ebp
add esi, eax
mov ecx, edi
mov eax, dword [esp + 0x38]
and ecx, 0x1f
shl eax, cl
mov ecx, ebx
shr eax, cl
mov ecx, dword [esp + 0x20]
lea ecx, [ecx + eax*4]
movzx eax, word [ecx]
mov word [esi], ax
movzx ebp, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add ebp, edi
mov ecx, dword [esp + 0x34]
add esi, eax
mov dword [esp + 0x3c], ebp
jmp 0x16ab358
mov ecx, dword [esp + 0x90]
mov edi, dword [esp + 0x20]
add ecx, 0xfffffffe
mov dword [esp + 0x18], ecx
cmp ebp, 0x20
jbe 0x16ab45f
mov edx, 3
jmp 0x16ab4d1
cmp edx, dword [esp + 0x48]
jb 0x16ab479
mov eax, ebp
and ebp, 7
shr eax, 3
sub edx, eax
mov dword [esp + 0x40], edx
mov ebx, dword [edx]
xor edx, edx
jmp 0x16ab4c9
cmp edx, dword [esp + 0x44]
jne 0x16ab48f
cmp ebp, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x14], eax
mov edx, eax
jmp 0x16ab4d1
mov ebx, dword [esp + 0x44]
mov ecx, ebp
shr ecx, 3
mov eax, edx
sub eax, ecx
mov dword [esp + 0x14], 0
cmp eax, ebx
jae 0x16ab4b4
mov ecx, edx
mov dword [esp + 0x14], 1
sub ecx, ebx
sub edx, ecx
imul eax, ecx, 0xfffffff8
mov ecx, dword [esp + 0x18]
mov dword [esp + 0x40], edx
mov ebx, dword [edx]
mov edx, dword [esp + 0x14]
add ebp, eax
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebp
cmp ecx, esi
sbb ecx, ecx
xor eax, eax
inc ecx
test edx, edx
sete al
test eax, ecx
je 0x16ab51b
mov ecx, ebp
mov edx, ebx
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x1c]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x18]
mov ax, word [edi + edx*4]
mov word [esi], ax
movzx eax, byte [edi + edx*4 + 2]
add ebp, eax
movzx eax, byte [edi + edx*4 + 3]
mov edx, dword [esp + 0x40]
add esi, eax
mov dword [esp + 0x3c], ebp
jmp 0x16ab450
cmp esi, dword [esp + 0x18]
ja 0x16ab55c
mov eax, dword [esp + 0x1c]
neg eax
and eax, 0x1f
mov edx, eax
nop dword [eax]
mov ecx, ebp
mov eax, ebx
and ecx, 0x1f
shl eax, cl
mov ecx, edx
shr eax, cl
lea ecx, [edi + eax*4]
mov ax, word [ecx]
mov word [esi], ax
movzx eax, byte [ecx + 2]
add ebp, eax
movzx eax, byte [ecx + 3]
add esi, eax
cmp esi, dword [esp + 0x18]
jbe 0x16ab530
mov dword [esp + 0x3c], ebp
mov edx, dword [esp + 0x1c]
cmp esi, dword [esp + 0x90]
jae 0x16ab579
push edx
push edi
lea eax, [esp + 0x40]
push eax
push esi
call fcn.016a9d40
add esp, 0x10
mov ecx, dword [esp + 0x10]
mov ebp, dword [esp + 0x80]
add ecx, 0xfffffffd
mov ebx, dword [esp + 0x7c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
mov esi, dword [esp + 0x84]
cmp ebx, 0x20
jbe 0x16ab5ad
mov esi, dword [esp + 0x78]
mov dword [esp + 0x14], 3
jmp 0x16ab61e
cmp ebp, dword [esp + 0x88]
jb 0x16ab5ca
mov eax, ebx
mov dword [esp + 0x14], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x16ab60c
cmp ebp, esi
jne 0x16ab5e0
mov esi, dword [esp + 0x78]
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x14], eax
jmp 0x16ab61e
mov ecx, ebx
mov dword [esp + 0x14], 0
shr ecx, 3
mov eax, ebp
sub eax, ecx
cmp eax, esi
jae 0x16ab601
mov ecx, ebp
mov dword [esp + 0x14], 1
sub ecx, esi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
mov ecx, dword [esp + 0x34]
add ebx, eax
mov esi, dword [ebp]
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebp
cmp edx, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x14], eax
sete al
test eax, ecx
je 0x16ab6a1
mov edi, dword [esp + 0x1c]
mov ecx, ebx
and ecx, 0x1f
neg edi
mov edx, esi
and edi, 0x1f
mov esi, dword [esp + 0x28]
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x20]
movzx eax, word [ecx + edx*4]
mov word [esi], ax
movzx esi, byte [ecx + edx*4 + 2]
movzx eax, byte [ecx + edx*4 + 3]
add esi, ebx
mov edx, dword [esp + 0x28]
mov ecx, esi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x78]
shl eax, cl
mov ecx, edi
mov edi, dword [esp + 0x20]
shr eax, cl
lea ecx, [edi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx ebx, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add ebx, esi
mov ecx, dword [esp + 0x34]
add edx, eax
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x28], edx
jmp 0x16ab593
mov ecx, dword [esp + 0x10]
add ecx, 0xfffffffe
mov dword [esp + 0x18], ecx
nop dword [eax]
cmp ebx, 0x20
jbe 0x16ab6c2
mov dword [esp + 0x14], 3
jmp 0x16ab73b
cmp ebp, dword [esp + 0x88]
jb 0x16ab6df
mov eax, ebx
mov dword [esp + 0x14], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x16ab729
cmp ebp, dword [esp + 0x84]
jne 0x16ab6f6
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x14], eax
jmp 0x16ab73b
mov esi, dword [esp + 0x84]
mov ecx, ebx
shr ecx, 3
mov eax, ebp
sub eax, ecx
mov dword [esp + 0x14], 0
cmp eax, esi
jae 0x16ab71e
mov ecx, ebp
mov dword [esp + 0x14], 1
sub ecx, esi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
mov ecx, dword [esp + 0x18]
add ebx, eax
mov esi, dword [ebp]
mov dword [esp + 0x78], esi
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebp
cmp ecx, edx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x14], eax
sete al
test eax, ecx
je 0x16ab78d
mov ecx, ebx
mov edx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x1c]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x28]
mov ax, word [edi + edx*4]
mov word [ecx], ax
movzx eax, byte [edi + edx*4 + 2]
add ebx, eax
movzx eax, byte [edi + edx*4 + 3]
mov edx, ecx
mov dword [esp + 0x7c], ebx
mov ecx, dword [esp + 0x18]
add edx, eax
mov dword [esp + 0x28], edx
jmp 0x16ab6b0
cmp edx, dword [esp + 0x18]
ja 0x16ab7cc
mov eax, dword [esp + 0x1c]
neg eax
and eax, 0x1f
mov ebp, eax
nop
mov ecx, ebx
mov eax, esi
and ecx, 0x1f
shl eax, cl
mov ecx, ebp
shr eax, cl
lea ecx, [edi + eax*4]
mov ax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add ebx, eax
movzx eax, byte [ecx + 3]
add edx, eax
cmp edx, dword [esp + 0x18]
jbe 0x16ab7a0
mov dword [esp + 0x7c], ebx
mov ebp, dword [esp + 0x1c]
cmp edx, dword [esp + 0x10]
jae 0x16ab7e9
push ebp
push edi
lea eax, [esp + 0x80]
push eax
push edx
call fcn.016a9d40
add esp, 0x10
mov ecx, dword [esp + 0x60]
mov ebp, dword [esp + 0x6c]
add ecx, 0xfffffffd
mov ebx, dword [esp + 0x68]
mov edx, dword [esp + 0x24]
mov dword [esp + 0x34], ecx
mov esi, dword [esp + 0x70]
cmp ebx, 0x20
jbe 0x16ab817
mov esi, dword [esp + 0x64]
mov dword [esp + 0x10], 3
jmp 0x16ab882
cmp ebp, dword [esp + 0x74]
jb 0x16ab831
mov eax, ebx
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x16ab873
cmp ebp, esi
jne 0x16ab847
mov esi, dword [esp + 0x64]
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x16ab882
mov ecx, ebx
mov dword [esp + 0x10], 0
shr ecx, 3
mov eax, ebp
sub eax, ecx
cmp eax, esi
jae 0x16ab868
mov ecx, ebp
mov dword [esp + 0x10], 1
sub ecx, esi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
mov ecx, dword [esp + 0x34]
add ebx, eax
mov esi, dword [ebp]
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebp
cmp edx, ecx
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x16ab905
mov edi, dword [esp + 0x1c]
mov ecx, ebx
and ecx, 0x1f
neg edi
mov edx, esi
and edi, 0x1f
mov esi, dword [esp + 0x24]
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x20]
movzx eax, word [ecx + edx*4]
mov word [esi], ax
movzx esi, byte [ecx + edx*4 + 2]
movzx eax, byte [ecx + edx*4 + 3]
add esi, ebx
mov edx, dword [esp + 0x24]
mov ecx, esi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x64]
shl eax, cl
mov ecx, edi
mov edi, dword [esp + 0x20]
shr eax, cl
lea ecx, [edi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx ebx, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add ebx, esi
mov ecx, dword [esp + 0x34]
add edx, eax
mov dword [esp + 0x68], ebx
mov dword [esp + 0x24], edx
jmp 0x16ab800
mov ecx, dword [esp + 0x60]
add ecx, 0xfffffffe
mov dword [esp + 0x18], ecx
cmp ebx, 0x20
jbe 0x16ab91f
mov dword [esp + 0x10], 3
jmp 0x16ab98c
cmp ebp, dword [esp + 0x74]
jb 0x16ab939
mov eax, ebx
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x16ab97d
cmp ebp, dword [esp + 0x70]
jne 0x16ab94d
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x16ab98c
mov esi, dword [esp + 0x70]
mov ecx, ebx
shr ecx, 3
mov eax, ebp
sub eax, ecx
mov dword [esp + 0x10], 0
cmp eax, esi
jae 0x16ab972
mov ecx, ebp
mov dword [esp + 0x10], 1
sub ecx, esi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
mov ecx, dword [esp + 0x18]
add ebx, eax
mov esi, dword [ebp]
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], ebx
mov dword [esp + 0x6c], ebp
cmp ecx, edx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x16ab9de
mov ecx, ebx
mov edx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x1c]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x24]
mov ax, word [edi + edx*4]
mov word [ecx], ax
movzx eax, byte [edi + edx*4 + 2]
add ebx, eax
movzx eax, byte [edi + edx*4 + 3]
mov edx, ecx
mov dword [esp + 0x68], ebx
mov ecx, dword [esp + 0x18]
add edx, eax
mov dword [esp + 0x24], edx
jmp 0x16ab910
cmp edx, dword [esp + 0x18]
ja 0x16aba1c
mov eax, dword [esp + 0x1c]
neg eax
and eax, 0x1f
mov ebp, eax
nop
mov ecx, ebx
mov eax, esi
and ecx, 0x1f
shl eax, cl
mov ecx, ebp
shr eax, cl
lea ecx, [edi + eax*4]
mov ax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add ebx, eax
movzx eax, byte [ecx + 3]
add edx, eax
cmp edx, dword [esp + 0x18]
jbe 0x16ab9f0
mov dword [esp + 0x68], ebx
mov ebp, dword [esp + 0x1c]
cmp edx, dword [esp + 0x60]
jae 0x16aba36
push ebp
push edi
lea eax, [esp + 0x6c]
push eax
push edx
call fcn.016a9d40
add esp, 0x10
mov ebp, dword [esp + 0x54]
mov ebx, dword [esp + 0x50]
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x58]
cmp ebx, 0x20
jbe 0x16aba59
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x10], 3
jmp 0x16abac0
cmp ebp, dword [esp + 0x5c]
jb 0x16aba73
mov eax, ebx
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x16abab1
cmp ebp, esi
jne 0x16aba89
mov esi, dword [esp + 0x4c]
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x16abac0
mov ecx, ebx
mov dword [esp + 0x10], 0
shr ecx, 3
mov eax, ebp
sub eax, ecx
cmp eax, esi
jae 0x16abaaa
mov ecx, ebp
mov dword [esp + 0x10], 1
sub ecx, esi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
add ebx, eax
mov esi, dword [ebp]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebp
mov eax, dword [esp + 0x8c]
add eax, 0xfffffffd
cmp edx, eax
sbb ecx, ecx
xor eax, eax
neg ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x16abb49
mov edi, dword [esp + 0x1c]
mov ecx, ebx
and ecx, 0x1f
neg edi
mov edx, esi
and edi, 0x1f
mov esi, dword [esp + 0x30]
shl edx, cl
mov ecx, edi
shr edx, cl
mov ecx, dword [esp + 0x20]
movzx eax, word [ecx + edx*4]
mov word [esi], ax
movzx esi, byte [ecx + edx*4 + 2]
movzx eax, byte [ecx + edx*4 + 3]
add esi, ebx
mov edx, dword [esp + 0x30]
mov ecx, esi
add edx, eax
and ecx, 0x1f
mov eax, dword [esp + 0x4c]
shl eax, cl
mov ecx, edi
mov edi, dword [esp + 0x20]
shr eax, cl
lea ecx, [edi + eax*4]
movzx eax, word [ecx]
mov word [edx], ax
movzx ebx, byte [ecx + 2]
movzx eax, byte [ecx + 3]
add ebx, esi
add edx, eax
mov dword [esp + 0x50], ebx
mov dword [esp + 0x30], edx
jmp 0x16aba42
mov ecx, dword [esp + 0x8c]
add ecx, 0xfffffffe
mov dword [esp + 0x18], ecx
cmp ebx, 0x20
jbe 0x16abb66
mov dword [esp + 0x10], 3
jmp 0x16abbd3
cmp ebp, dword [esp + 0x5c]
jb 0x16abb80
mov eax, ebx
mov dword [esp + 0x10], 0
shr eax, 3
sub ebp, eax
and ebx, 7
jmp 0x16abbc4
cmp ebp, dword [esp + 0x58]
jne 0x16abb94
cmp ebx, 0x20
sbb eax, eax
add eax, 2
mov dword [esp + 0x10], eax
jmp 0x16abbd3
mov esi, dword [esp + 0x58]
mov ecx, ebx
shr ecx, 3
mov eax, ebp
sub eax, ecx
mov dword [esp + 0x10], 0
cmp eax, esi
jae 0x16abbb9
mov ecx, ebp
mov dword [esp + 0x10], 1
sub ecx, esi
imul eax, ecx, 0xfffffff8
sub ebp, ecx
mov ecx, dword [esp + 0x18]
add ebx, eax
mov esi, dword [ebp]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebp
cmp ecx, edx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp dword [esp + 0x10], eax
sete al
test eax, ecx
je 0x16abc25
mov ecx, ebx
mov edx, esi
and ecx, 0x1f
shl edx, cl
mov ecx, dword [esp + 0x1c]
neg ecx
and ecx, 0x1f
shr edx, cl
mov ecx, dword [esp + 0x30]
mov ax, word [edi + edx*4]
mov word [ecx], ax
movzx eax, byte [edi + edx*4 + 2]
add ebx, eax
movzx eax, byte [edi + edx*4 + 3]
mov edx, ecx
mov dword [esp + 0x50], ebx
mov ecx, dword [esp + 0x18]
add edx, eax
mov dword [esp + 0x30], edx
jmp 0x16abb57
cmp edx, dword [esp + 0x18]
ja 0x16abc6c
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
neg eax
and eax, 0x1f
mov dword [esp + 0x2c], eax
nop dword [eax]
mov ecx, ebx
mov eax, esi
and ecx, 0x1f
shl eax, cl
mov ecx, dword [esp + 0x2c]
shr eax, cl
lea ecx, [edi + eax*4]
mov ax, word [ecx]
mov word [edx], ax
movzx eax, byte [ecx + 2]
add ebx, eax
movzx eax, byte [ecx + 3]
add edx, eax
cmp edx, ebp
jbe 0x16abc40
mov dword [esp + 0x50], ebx
mov ebp, dword [esp + 0x1c]
cmp edx, dword [esp + 0x8c]
jae 0x16abc89
push ebp
push edi
lea eax, [esp + 0x54]
push eax
push edx
call fcn.016a9d40
add esp, 0x10
lea eax, [esp + 0x4c]
push eax
call fcn.016a9d20
mov edx, eax
lea eax, [esp + 0x68]
push eax
call fcn.016a9d20
and edx, eax
lea eax, [esp + 0x80]
push eax
call fcn.016a9d20
and edx, eax
lea eax, [esp + 0x44]
push eax
call fcn.016a9d20
add esp, 0x10
test eax, edx
mov eax, dword [esp + 0xa4]
jne 0x16abccd
mov eax, 0xffffffec
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x8c
ret