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

Disassembly:
sub esp, 0x28
mov eax, dword [esp + 0x2c]
push ebx
push ebp
push esi
mov ecx, dword [eax + 0x74]
mov edx, dword [eax + 0x7c]
mov ebp, dword [eax + 0x68]
mov esi, dword [eax]
mov ebx, dword [eax + 4]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 0x78]
mov dword [esp + 0x1c], edx
push edi
mov edi, dword [eax + 8]
lea ecx, [ecx + edx*4]
mov dword [esp + 0x10], ebp
add ecx, 0xc
mov dword [esp + 0x28], 0
mov dword [esp + 0x14], ecx
mov edx, 1
mov ecx, dword [esp + 0x40]
shl edx, cl
mov ecx, edx
sar ecx, 1
or ecx, edx
test dword [eax + 0x80], 0xfffffffc
mov dword [esp + 0x1c], ecx
jbe 0x1016f428
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
lea ecx, [ecx + ecx*2]
shl ecx, 2
mov dword [esp + 0x30], ecx
jmp 0x1016e750
mov eax, dword [esp + 0x3c]
xor ecx, ecx
mov dword [esp + 0x2c], ecx
cmp dword [esp + 0x20], ecx
jbe 0x1016f3fd
mov ebp, dword [edx]
mov dword [esp + 0x40], ebp
test ebp, ebp
je 0x1016f3dc
test ebp, 0x200010
jne 0x1016ea6d
mov edx, ebp
and edx, 0x1ef
je 0x1016ea6d
mov ecx, dword [eax + 0x6c]
movzx ecx, byte [ecx + edx]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x1016e828
cmp ebx, ebp
mov ebx, ebp
jae 0x1016e7bb
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
jmp 0x1016e7ce
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016e816
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016e809
cmp edx, 0x8f
jbe 0x1016e7fa
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016e811
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016e816
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016e7d4
jmp 0x1016e8b4
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x1016e8b1
cmp ebx, ebp
jae 0x1016e850
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
jmp 0x1016e856
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
lea esp, [esp]
test edi, edi
jne 0x1016e8a2
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016e895
cmp edx, 0x8f
jbe 0x1016e886
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016e89d
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016e8a2
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016e860
jmp 0x1016e8b4
mov ebp, dword [edx + 4]
test ebp, ebp
mov ebp, dword [esp + 0x40]
je 0x1016ea63
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x80000
and edx, 0x20000
or edx, ecx
mov ecx, ebp
and ecx, 0x400000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x40000
shr edx, 2
or edx, ecx
and ebp, 0xaa
shr edx, 0xe
or edx, ebp
movzx ecx, byte [edx + 0x101eb0d8]
mov dword [esp + 0x34], ecx
movzx ecx, byte [edx + 0x101eafd8]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x1016e9aa
cmp ebx, ebp
mov ebx, ebp
jae 0x1016e93d
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x1016e94c
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016e994
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016e987
cmp edx, 0x8f
jbe 0x1016e978
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016e98f
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016e994
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016e952
mov ecx, dword [esp + 0x24]
jmp 0x1016ea38
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x1016ea35
cmp ebx, ebp
jae 0x1016e9ce
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x1016e9d8
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
mov edi, edi
test edi, edi
jne 0x1016ea22
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016ea15
cmp edx, 0x8f
jbe 0x1016ea06
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016ea1d
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016ea22
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016e9e0
mov ecx, dword [esp + 0x24]
jmp 0x1016ea38
mov ecx, dword [edx + 4]
xor ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
je 0x1016ea44
neg edx
mov ebp, dword [esp + 0x18]
shl ecx, 0x13
or ecx, 0x10
mov dword [ebp], edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
or ebp, ecx
or dword [edx - 4], 0x20
or dword [edx + 4], 8
or ebp, 0x200000
mov dword [esp + 0x40], ebp
test ebp, 0x1000080
jne 0x1016ed7d
test ebp, 0xf78
je 0x1016ed7d
mov ecx, dword [eax + 0x6c]
mov edx, ebp
shr edx, 3
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x1016eb2c
cmp ebx, ebp
mov ebx, ebp
jae 0x1016eabf
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
jmp 0x1016ead2
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016eb1a
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016eb0d
cmp edx, 0x8f
jbe 0x1016eafe
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016eb15
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016eb1a
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016ead8
jmp 0x1016ebb4
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x1016ebb1
cmp ebx, ebp
jae 0x1016eb54
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
jmp 0x1016eb5a
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016eba2
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016eb95
cmp edx, 0x8f
jbe 0x1016eb86
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016eb9d
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016eba2
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016eb60
jmp 0x1016ebb4
mov ebp, dword [edx + 4]
test ebp, ebp
mov ebp, dword [esp + 0x40]
je 0x1016ed73
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x400000
and edx, 0x100000
or edx, ecx
mov ecx, ebp
and ecx, 0x2000000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x80000
shr edx, 4
or edx, ecx
and ebp, 0x550
shr edx, 0xc
or edx, ebp
shr edx, 3
movzx ecx, byte [edx + 0x101eb0d8]
mov dword [esp + 0x34], ecx
movzx ecx, byte [edx + 0x101eafd8]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x1016ecad
cmp ebx, ebp
mov ebx, ebp
jae 0x1016ec40
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x1016ec4f
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016ec97
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016ec8a
cmp edx, 0x8f
jbe 0x1016ec7b
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016ec92
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016ec97
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016ec55
mov ecx, dword [esp + 0x24]
jmp 0x1016ed39
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x1016ed36
cmp ebx, ebp
jae 0x1016ecd1
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x1016ecdb
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016ed23
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016ed16
cmp edx, 0x8f
jbe 0x1016ed07
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016ed1e
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016ed23
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016ece1
mov ecx, dword [esp + 0x24]
jmp 0x1016ed39
mov ecx, dword [edx + 4]
xor ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
je 0x1016ed45
neg edx
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
shl ecx, 0x16
or ecx, 0x80
mov dword [ebp + eax*4], edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
or ebp, ecx
or dword [edx - 4], 0x100
or dword [edx + 4], 0x40
or ebp, 0x1000000
mov dword [esp + 0x40], ebp
test ebp, 0x8000400
jne 0x1016f090
test ebp, 0x7bc0
je 0x1016f090
mov ecx, dword [eax + 0x6c]
mov edx, ebp
shr edx, 6
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x1016ee3c
cmp ebx, ebp
mov ebx, ebp
jae 0x1016edcf
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
jmp 0x1016ede2
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016ee2a
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016ee1d
cmp edx, 0x8f
jbe 0x1016ee0e
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016ee25
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016ee2a
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016ede8
jmp 0x1016eec4
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x1016eec1
cmp ebx, ebp
jae 0x1016ee64
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
jmp 0x1016ee6a
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016eeb2
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016eea5
cmp edx, 0x8f
jbe 0x1016ee96
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016eead
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016eeb2
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016ee70
jmp 0x1016eec4
mov ebp, dword [edx + 4]
test ebp, ebp
mov ebp, dword [esp + 0x40]
je 0x1016f086
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x2000000
and edx, 0x800000
or edx, ecx
mov ecx, ebp
and ecx, 0x10000000
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x400000
shr edx, 4
or edx, ecx
and ebp, 0x2a80
shr edx, 0xc
or edx, ebp
shr edx, 6
movzx ecx, byte [edx + 0x101eb0d8]
mov dword [esp + 0x34], ecx
movzx ecx, byte [edx + 0x101eafd8]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x1016efbd
cmp ebx, ebp
mov ebx, ebp
jae 0x1016ef50
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x1016ef5f
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016efa7
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016ef9a
cmp edx, 0x8f
jbe 0x1016ef8b
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016efa2
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016efa7
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016ef65
mov ecx, dword [esp + 0x24]
jmp 0x1016f049
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x1016f046
cmp ebx, ebp
jae 0x1016efe1
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x1016efeb
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016f033
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f026
cmp edx, 0x8f
jbe 0x1016f017
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016f02e
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016f033
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016eff1
mov ecx, dword [esp + 0x24]
jmp 0x1016f049
mov ecx, dword [edx + 4]
xor ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x1c]
je 0x1016f055
neg edx
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x20]
shl ecx, 0x19
or ecx, 0x400
mov dword [ebp + eax*8], edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
or ebp, ecx
or dword [edx - 4], 0x800
or dword [edx + 4], 0x200
or ebp, 0x8000000
mov dword [esp + 0x40], ebp
test ebp, 0x40002000
jne 0x1016f3d2
test ebp, 0x3de00
je 0x1016f3d2
mov ecx, dword [eax + 0x6c]
mov edx, ebp
shr edx, 9
and edx, 0x1ef
movzx ecx, byte [edx + ecx]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x1016f154
cmp ebx, ebp
mov ebx, ebp
jae 0x1016f0e6
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
jmp 0x1016f0f9
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
nop
test edi, edi
jne 0x1016f142
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f135
cmp edx, 0x8f
jbe 0x1016f126
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016f13d
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016f142
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016f100
jmp 0x1016f1dc
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x1016f1d9
cmp ebx, ebp
jae 0x1016f17c
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov ebp, dword [esp + 0x24]
jmp 0x1016f182
mov ebp, dword [edx + 4]
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016f1ca
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f1bd
cmp edx, 0x8f
jbe 0x1016f1ae
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016f1c5
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016f1ca
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016f188
jmp 0x1016f1dc
mov ebp, dword [edx + 4]
test ebp, ebp
mov ebp, dword [esp + 0x40]
je 0x1016f3cc
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx - 4]
mov ecx, dword [ecx + 4]
shr edx, 2
and ecx, 0x10000000
and edx, 0x4000000
or edx, ecx
mov ecx, ebp
and ecx, 0x81ffffff
shr edx, 1
or edx, ecx
mov ecx, ebp
and ecx, 0x2000000
shr edx, 4
or edx, ecx
and ebp, 0x15400
shr edx, 0xc
or edx, ebp
shr edx, 9
movzx ecx, byte [edx + 0x101eb0d8]
mov dword [esp + 0x34], ecx
movzx ecx, byte [edx + 0x101eafd8]
add ecx, 7
mov edx, dword [eax + ecx*4]
lea ecx, [eax + ecx*4]
mov dword [esp + 0x10], ecx
mov ecx, esi
shr ecx, 0x10
mov ebp, dword [edx]
sub ebx, ebp
cmp ecx, ebp
jae 0x1016f2d9
cmp ebx, ebp
mov ebx, ebp
jae 0x1016f26c
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
jmp 0x1016f27b
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016f2c3
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f2b6
cmp edx, 0x8f
jbe 0x1016f2a7
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016f2be
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016f2c3
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016f281
mov edx, dword [esp + 0x24]
jmp 0x1016f369
mov ecx, ebp
shl ecx, 0x10
sub esi, ecx
test ebx, 0x8000
jne 0x1016f366
cmp ebx, ebp
jae 0x1016f301
xor ecx, ecx
cmp dword [edx + 4], ecx
sete cl
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 0xc]
jmp 0x1016f30b
mov ecx, dword [edx + 4]
mov dword [esp + 0x24], ecx
mov ecx, dword [edx + 8]
mov edx, dword [esp + 0x10]
mov dword [edx], ecx
test edi, edi
jne 0x1016f353
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f346
cmp edx, 0x8f
jbe 0x1016f337
add esi, 0xff00
inc dword [eax + 0xc]
jmp 0x1016f34e
shl edx, 9
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 7
jmp 0x1016f353
shl edx, 8
mov dword [eax + 0x10], edi
add esi, edx
mov edi, 8
add ebx, ebx
add esi, esi
dec edi
cmp ebx, 0x8000
jb 0x1016f311
mov edx, dword [esp + 0x24]
jmp 0x1016f369
mov edx, dword [edx + 4]
xor edx, dword [esp + 0x34]
mov ecx, dword [esp + 0x1c]
je 0x1016f375
neg ecx
mov ebp, dword [esp + 0x30]
mov eax, dword [esp + 0x18]
mov dword [eax + ebp], ecx
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x40]
mov eax, dword [esp + 0x3c]
or dword [ecx - 4], 0x4000
mov ecx, edx
shl ecx, 0x1c
or ecx, 0x2000
shl edx, 0x12
or ebp, ecx
or edx, 2
mov ecx, dword [esp + 0x14]
or dword [ecx + 4], 0x1000
mov ecx, dword [eax + 0x7c]
mov eax, dword [esp + 0x14]
or dword [eax + ecx*4 + 8], edx
mov edx, eax
mov eax, dword [esp + 0x3c]
or dword [edx + ecx*4 + 4], 4
or dword [edx + ecx*4 + 0xc], 1
or ebp, 0x40000000
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x2c]
mov dword [edx], ebp
mov ebp, dword [esp + 0x18]
inc ecx
add ebp, 4
mov dword [esp + 0x2c], ecx
add edx, 4
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], edx
cmp ecx, dword [esp + 0x20]
jb 0x1016e764
mov ecx, dword [eax + 0x80]
add edx, 8
add dword [esp + 0x28], 4
and ecx, 0xfffffffc
add ebp, dword [esp + 0x30]
mov dword [esp + 0x18], ebp
mov dword [esp + 0x14], edx
cmp dword [esp + 0x28], ecx
jb 0x1016e750
mov ebp, dword [esp + 0x10]
mov dword [eax + 0x68], ebp
mov ebp, dword [esp + 0x28]
mov dword [eax], esi
mov dword [eax + 4], ebx
mov dword [eax + 8], edi
mov edx, dword [eax + 0x80]
cmp ebp, edx
jae 0x1016f852
mov ecx, dword [esp + 0x20]
test ecx, ecx
je 0x1016f852
mov esi, dword [esp + 0x14]
mov ebx, ecx
mov dword [esp + 0x40], ebx
jmp 0x1016f460
xor edi, edi
mov ecx, edx
mov dword [esp + 0x3c], edi
sub ecx, ebp
je 0x1016f83b
mov ecx, dword [eax + 0x7c]
lea ebp, [edi + edi*2]
mov esi, dword [esi]
add ecx, 2
mov dword [esp + 0x34], ecx
mov edx, 0x200010
mov ecx, ebp
shl edx, cl
test esi, edx
jne 0x1016f818
mov edx, 0x1ef
shl edx, cl
test esi, edx
je 0x1016f818
shr esi, cl
mov ecx, dword [eax + 0x6c]
and esi, 0x1ef
mov edi, dword [eax]
movzx ecx, byte [esi + ecx]
add ecx, 7
lea ecx, [eax + ecx*4]
mov dword [eax + 0x68], ecx
mov ecx, dword [ecx]
mov edx, dword [eax + 0x68]
mov ecx, dword [ecx]
sub dword [eax + 4], ecx
mov ecx, dword [edx]
mov esi, dword [ecx]
mov ecx, edi
shr ecx, 0x10
cmp ecx, esi
jae 0x1016f55d
cmp dword [eax + 4], esi
mov dword [eax + 4], esi
mov ecx, dword [edx]
jae 0x1016f4e6
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
jmp 0x1016f4f1
xor ebx, ebx
cmp dword [ecx + 4], ebx
mov ecx, dword [ecx + 0xc]
sete bl
mov dword [edx], ecx
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
lea esp, [esp]
test ecx, ecx
jne 0x1016f545
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f535
cmp edx, 0x8f
jbe 0x1016f526
add dword [eax], 0xff00
inc dword [eax + 0xc]
jmp 0x1016f53d
shl edx, 9
mov ecx, 7
add dword [eax], edx
mov dword [eax + 0x10], edi
jmp 0x1016f542
shl edx, 8
add dword [eax], edx
mov dword [eax + 0x10], edi
mov ecx, 8
mov dword [eax + 8], ecx
shl dword [eax], 1
add esi, esi
dec ecx
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
cmp esi, 0x8000
jb 0x1016f500
jmp 0x1016f5ed
shl esi, 0x10
sub edi, esi
mov esi, dword [eax + 4]
mov dword [eax], edi
mov ecx, dword [edx]
test esi, 0x8000
jne 0x1016f5ea
cmp esi, dword [ecx]
jae 0x1016f582
xor ebx, ebx
cmp dword [ecx + 4], ebx
mov ecx, dword [ecx + 0xc]
sete bl
jmp 0x1016f588
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx], ecx
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x1016f5d5
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f5c5
cmp edx, 0x8f
jbe 0x1016f5b6
add dword [eax], 0xff00
inc dword [eax + 0xc]
jmp 0x1016f5cd
shl edx, 9
mov ecx, 7
add dword [eax], edx
mov dword [eax + 0x10], edi
jmp 0x1016f5d2
shl edx, 8
add dword [eax], edx
mov dword [eax + 0x10], edi
mov ecx, 8
mov dword [eax + 8], ecx
shl dword [eax], 1
add esi, esi
dec ecx
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
cmp esi, 0x8000
jb 0x1016f590
jmp 0x1016f5ed
mov ebx, dword [ecx + 4]
test ebx, ebx
je 0x1016f803
mov edx, dword [esp + 0x14]
lea ecx, [ebp + 0x11]
mov esi, dword [edx + 4]
mov edi, dword [edx]
mov edx, dword [edx - 4]
shr esi, cl
lea ecx, [ebp + 0x13]
shr edx, cl
and esi, 4
and edx, 1
mov ecx, ebp
or esi, edx
mov edx, edi
shr edx, cl
mov ecx, dword [esp + 0x3c]
and edx, 0xaa
or esi, edx
test ecx, ecx
jne 0x1016f635
mov ecx, edi
shr ecx, 0xe
and ecx, 0x10
or esi, ecx
jmp 0x1016f644
lea ecx, [ecx + ecx*2]
mov edx, edi
add ecx, 0xc
shr edx, cl
and edx, 0x10
or esi, edx
lea ecx, [ebp + 0x10]
shr edi, cl
and edi, 0x40
or edi, esi
movzx ecx, byte [edi + 0x101eafd8]
movzx ebp, byte [edi + 0x101eb0d8]
add ecx, 7
mov edi, dword [eax]
lea edx, [eax + ecx*4]
mov dword [eax + 0x68], edx
mov ecx, dword [edx]
mov ecx, dword [ecx]
sub dword [eax + 4], ecx
mov ecx, dword [edx]
mov esi, dword [ecx]
mov ecx, edi
shr ecx, 0x10
cmp ecx, esi
jae 0x1016f701
cmp dword [eax + 4], esi
mov dword [eax + 4], esi
mov ecx, dword [edx]
jae 0x1016f691
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
jmp 0x1016f69c
xor ebx, ebx
cmp dword [ecx + 4], ebx
mov ecx, dword [ecx + 0xc]
sete bl
mov dword [edx], ecx
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x1016f6e9
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f6d9
cmp edx, 0x8f
jbe 0x1016f6ca
add dword [eax], 0xff00
inc dword [eax + 0xc]
jmp 0x1016f6e1
shl edx, 9
mov ecx, 7
add dword [eax], edx
mov dword [eax + 0x10], edi
jmp 0x1016f6e6
shl edx, 8
add dword [eax], edx
mov dword [eax + 0x10], edi
mov ecx, 8
mov dword [eax + 8], ecx
shl dword [eax], 1
add esi, esi
dec ecx
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
cmp esi, 0x8000
jb 0x1016f6a4
jmp 0x1016f795
shl esi, 0x10
sub edi, esi
mov esi, dword [eax + 4]
mov dword [eax], edi
mov ecx, dword [edx]
test esi, 0x8000
jne 0x1016f792
cmp esi, dword [ecx]
jae 0x1016f72a
xor ebx, ebx
cmp dword [ecx + 4], ebx
mov ecx, dword [ecx + 0xc]
sete bl
jmp 0x1016f730
mov ebx, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [edx], ecx
mov esi, dword [eax + 4]
mov ecx, dword [eax + 8]
test ecx, ecx
jne 0x1016f77d
mov ecx, dword [eax + 0x10]
movzx edx, byte [ecx + 1]
lea edi, [ecx + 1]
cmp byte [ecx], 0xff
jne 0x1016f76d
cmp edx, 0x8f
jbe 0x1016f75e
add dword [eax], 0xff00
inc dword [eax + 0xc]
jmp 0x1016f775
shl edx, 9
mov ecx, 7
add dword [eax], edx
mov dword [eax + 0x10], edi
jmp 0x1016f77a
shl edx, 8
add dword [eax], edx
mov dword [eax + 0x10], edi
mov ecx, 8
mov dword [eax + 8], ecx
shl dword [eax], 1
add esi, esi
dec ecx
mov dword [eax + 4], esi
mov dword [eax + 8], ecx
cmp esi, 0x8000
jb 0x1016f738
jmp 0x1016f795
mov ebx, dword [ecx + 4]
xor ebx, ebp
mov edx, dword [esp + 0x1c]
je 0x1016f79f
neg edx
mov edi, dword [esp + 0x3c]
mov ecx, edi
imul ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x18]
lea ebp, [edi + edi*2]
mov dword [esi + ecx*4], edx
mov ecx, ebp
mov esi, dword [esp + 0x14]
mov edx, 0x20
shl edx, cl
or dword [esi - 4], edx
mov edx, ebx
shl edx, 0x13
or edx, 0x10
shl edx, cl
or dword [esi], edx
mov edx, 8
shl edx, cl
or dword [esi + 4], edx
cmp edi, 3
jne 0x1016f80b
mov ecx, dword [esp + 0x34]
mov edx, 0x200000
shl ebx, 0x12
or ebx, 2
or dword [esi + ecx*4], ebx
or dword [esi + ecx*4 - 4], 4
or dword [esi + ecx*4 + 4], 1
mov ecx, ebp
shl edx, cl
or dword [esi], edx
jmp 0x1016f81c
mov edi, dword [esp + 0x3c]
mov esi, dword [esp + 0x14]
mov edx, 0x200000
mov ecx, ebp
shl edx, cl
or dword [esi], edx
jmp 0x1016f81c
mov esi, dword [esp + 0x14]
mov edx, dword [eax + 0x80]
inc edi
mov ebp, dword [esp + 0x28]
mov ecx, edx
sub ecx, ebp
mov dword [esp + 0x3c], edi
cmp edi, ecx
jb 0x1016f470
mov ebx, dword [esp + 0x40]
add dword [esp + 0x18], 4
add esi, 4
dec ebx
mov dword [esp + 0x14], esi
mov dword [esp + 0x40], ebx
jne 0x1016f460
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x28
ret