Function at 0x10016f80
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x2c
mov ecx, dword [esp + 0x30]
push ebx
push ebp
push esi
push edi
mov edi, dword [esp + 0x64]
lea esi, [ecx + 0x98]
xor ebx, ebx
lea edx, [edi + 4]
lea ebp, [ecx + 0xa8]
mov dword [edx], ebx
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x44]
mov dword [edi], ebx
mov eax, dword [esi]
mov dword [esp + 0x20], edx
mov dword [esp + 0x38], eax
test eax, eax
jle 0x10017021
mov ecx, dword [esp + 0x14]
mov ecx, dword [ecx]
lea edx, [ecx + ecx]
xor edi, edi
test ecx, ecx
jle 0x10016ff7
nop dword [eax]
movsx eax, word [ebp + edi*2]
cdq
xor eax, edx
sub eax, edx
movzx edx, ax
cmp bx, dx
movzx eax, bx
mov esi, edx
cmovg esi, eax
inc edi
movzx ebx, si
cmp edi, ecx
jl 0x10016fd0
mov eax, dword [esp + 0x38]
lea edx, [ecx + ecx]
add ebp, edx
sub eax, 1
mov dword [esp + 0x38], eax
jne 0x10016fc3
mov ecx, dword [esp + 0x40]
mov edi, dword [esp + 0x64]
mov ebp, dword [esp + 0x44]
lea eax, [ecx + 0x98]
lea edx, [edi + 4]
mov dword [esp + 0x18], eax
mov dword [esp + 0x20], edx
jmp 0x1001702f
lea eax, [ecx + 0xa8]
mov dword [esp + 0x18], esi
mov dword [esp + 0x14], eax
movsx esi, bx
xor eax, eax
shl esi, 0x10
lea ebx, [ecx + 0xac]
sar esi, 3
test esi, esi
mov dword [esp + 0x1c], ebx
cmovs esi, eax
mov dword [edi], esi
cmp dword [ebx], 5
jbe 0x10017468
mov dword [esp + 0x1c], ebx
lea ebx, [ecx + 0xcc]
mov dword [esp + 0x34], eax
cmp dword [ecx + 0x98], eax
jle 0x10017430
nop
mov edx, ebx
mov dword [esp + 0x38], ebx
mov ebx, dword [esp + 0x14]
xor esi, esi
mov dword [esp + 0x10], edx
mov edi, dword [ebx]
mov ebx, edx
imul edi, eax
mov eax, dword [ecx + 0xa0]
add eax, 0xfffffff9
cmp eax, 0x1b
ja case.0x100170a0.8
movzx eax, byte [eax + 0x10018bf8]
jmp dword [eax*4 + 0x10018be4]
mov eax, dword [ecx + 0xc0]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x50]
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 0xc8]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sar esi, 2
sar eax, 2
add esi, eax
jmp 0x100171e5
mov eax, dword [ecx + 0xc0]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x50]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xcc]
lea ebx, [ecx + 0xcc]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x54]
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sar esi, 2
sar eax, 2
add esi, eax
jmp case.0x100170a0.8
mov eax, dword [ecx + 0xb0]
mov edx, dword [esp + 0x38]
add eax, edi
movsx esi, word [ebp + eax*2]
mov eax, dword [edx]
add eax, edi
shl esi, 0x10
sar esi, 3
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
add esi, eax
jmp 0x100171e5
mov eax, dword [ecx + 0xb0]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x50]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x38]
mov eax, dword [edx]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
sar esi, 2
sar edx, 2
add esi, edx
mov ebx, dword [esp + 0x10]
mov eax, esi
mov esi, dword [esp + 0x64]
cdq
xor eax, edx
sub eax, edx
cmp dword [esi], eax
cmovg eax, dword [esi]
mov dword [esi], eax
xor esi, esi
mov eax, dword [ecx + 0xa0]
add eax, 0xfffffff9
cmp eax, 0x1b
ja case.0x10017216.8
movzx eax, byte [eax + 0x10018c28]
jmp dword [eax*4 + 0x10018c14]
mov eax, dword [ecx + 0xc4]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x50]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xc8]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x54]
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sar esi, 2
sar eax, 2
add esi, eax
jmp case.0x10017216.8
mov eax, dword [ecx + 0xc4]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x50]
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 0xd0]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sar esi, 2
sar eax, 2
add esi, eax
jmp case.0x10017216.8
mov eax, dword [ecx + 0xb4]
add eax, edi
movsx esi, word [ebp + eax*2]
mov eax, dword [ecx + 0xd0]
add eax, edi
shl esi, 0x10
sar esi, 3
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
add esi, eax
jmp case.0x10017216.8
mov eax, dword [ecx + 0xb4]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x50]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xd0]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x54]
mov dword [esp + 0x1c], edx
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
sar esi, 2
sar edx, 2
add esi, edx
mov eax, esi
mov esi, dword [esp + 0x64]
cdq
xor eax, edx
sub eax, edx
cmp dword [esi], eax
cmovg eax, dword [esi]
xor edx, edx
mov dword [esi], eax
mov eax, dword [ecx + 0xa0]
cmp eax, 7
je 0x10017381
cmp eax, 0x22
je 0x10017381
lea ebx, [ecx + 0xcc]
jmp 0x100173e2
mov eax, dword [ecx + 0xb8]
add eax, edi
movsx esi, word [ebp + eax*2]
mov eax, dword [ebx]
add eax, edi
shl esi, 0x10
sar esi, 3
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x50]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xd0]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x50]
mov dword [esp + 0x1c], edx
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
sar eax, 2
sar edx, 2
add eax, esi
add edx, eax
mov edi, dword [esp + 0x64]
mov eax, edx
cdq
mov esi, eax
mov eax, dword [esp + 0x34]
xor esi, edx
sub esi, edx
mov edx, dword [esp + 0x18]
cmp dword [edi], esi
cmovg esi, dword [edi]
inc eax
mov dword [edi], esi
mov dword [esp + 0x34], eax
cmp eax, dword [edx]
jl 0x10017070
lea eax, [ecx + 0xac]
mov dword [esp + 0x1c], eax
lea eax, [ecx + 0x98]
mov dword [esp + 0x18], eax
lea eax, [ecx + 0xa8]
mov dword [esp + 0x14], eax
lea eax, [edi + 4]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x38], esi
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
imul dword [esp + 0x38]
shl edx, 1
mov dword [esp + 0x10], edx
mov esi, dword [esp + 0x10]
lea edx, [edi + 4]
mov eax, dword [esp + 0x18]
shl esi, 0xa
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x14]
mov dword [edi], esi
mov dword [esp + 0x14], eax
jmp 0x10017472
lea ebx, [ecx + 0xcc]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x1c]
cmp dword [eax], 2
jbe 0x100183a2
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], 0
mov eax, dword [eax]
test eax, eax
jle 0x100178c4
xor edx, edx
nop word [eax + eax]
mov eax, dword [esp + 0x14]
xor esi, esi
mov dword [esp + 0x10], esi
mov edi, dword [eax]
mov eax, dword [ecx + 0xc0]
imul edi, edx
test eax, eax
js 0x100174e8
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
sar esi, 2
neg esi
mov dword [esp + 0x10], esi
mov eax, dword [ebx]
test eax, eax
js 0x1001751d
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
sub esi, eax
mov dword [esp + 0x10], esi
mov eax, dword [ecx + 0xc4]
test eax, eax
js 0x10017556
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
sub esi, eax
mov dword [esp + 0x10], esi
mov eax, dword [ecx + 0xd0]
test eax, eax
js 0x1001758f
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
sub esi, eax
mov dword [esp + 0x10], esi
cmp dword [ecx + 0xc0], 0
jl 0x100175b7
cmp dword [ebx], 0
jl 0x100175b7
mov dword [esp + 0x20], 0x5a7efa00
mov eax, dword [esp + 0x20]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
mov eax, dword [ecx + 0xc8]
test eax, eax
js 0x100175ec
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
sub esi, eax
mov eax, dword [ecx + 0xb8]
test eax, eax
js 0x10017621
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
add esi, eax
mov eax, dword [ecx + 0xb0]
add eax, edi
movsx eax, word [ebp + eax*2]
shl eax, 0x10
sar eax, 3
add esi, eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x10], esi
test eax, eax
jle 0x10017689
mov edx, dword [esp + 0x1c]
cmp dword [edx], 5
jbe 0x10017670
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
shl eax, 0xa
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x60]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
shl esi, 0xa
mov eax, esi
mov esi, dword [esp + 0x64]
cdq
xor eax, edx
sub eax, edx
cmp dword [esi], eax
cmovg eax, dword [esi]
mov dword [esi], eax
xor esi, esi
mov eax, dword [ecx + 0xc0]
mov dword [esp + 0x10], esi
test eax, eax
js 0x100176d8
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
sar esi, 2
mov dword [esp + 0x10], esi
mov eax, dword [ebx]
test eax, eax
js 0x1001770d
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
add esi, eax
mov dword [esp + 0x10], esi
mov eax, dword [ecx + 0xc4]
test eax, eax
js 0x10017746
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
add esi, eax
mov dword [esp + 0x10], esi
mov eax, dword [ecx + 0xd0]
test eax, eax
js 0x10017785
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
add esi, eax
mov eax, dword [ecx + 0xd0]
mov dword [esp + 0x10], esi
cmp dword [ecx + 0xc4], 0
jl 0x100177ac
test eax, eax
js 0x100177ac
mov dword [esp + 0x20], 0x5a7efa00
mov eax, dword [esp + 0x20]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
mov eax, dword [ecx + 0xc8]
test eax, eax
js 0x100177e1
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
add esi, eax
mov eax, dword [ecx + 0xb8]
test eax, eax
js 0x10017816
add eax, edi
mov dword [esp + 0x34], 0x5a7efa00
movsx eax, word [ebp + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x34]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
sar eax, 2
add esi, eax
mov eax, dword [ecx + 0xb4]
add eax, edi
mov edi, dword [esp + 0x60]
movsx eax, word [ebp + eax*2]
shl eax, 0x10
sar eax, 3
add esi, eax
mov dword [esp + 0x10], esi
test edi, edi
jle 0x1001787a
mov eax, dword [esp + 0x1c]
cmp dword [eax], 5
jbe 0x10017861
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x20]
shl eax, 0xa
mov dword [esp + 0x10], eax
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x20]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x20], edx
mov esi, dword [esp + 0x20]
shl esi, 0xa
mov edi, dword [esp + 0x64]
mov eax, esi
cdq
mov esi, eax
mov eax, dword [esp + 0x18]
xor esi, edx
sub esi, edx
mov edx, dword [esp + 0x38]
cmp dword [edi], esi
cmovg esi, dword [edi]
inc edx
mov dword [edi], esi
mov eax, dword [eax]
mov dword [esp + 0x38], edx
cmp edx, eax
jl 0x100174a0
lea edx, [ecx + 0xa8]
mov dword [esp + 0x14], edx
lea ebx, [ecx + 0xac]
lea edx, [ecx + 0x98]
mov dword [esp + 0x18], edx
lea edx, [edi + 4]
jmp 0x100178c8
mov ebx, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x2c], ebp
mov dword [esp + 0x18], ebp
mov ebp, ecx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x44]
mov dword [esp + 0x20], edx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x24], 0
mov dword [esp + 0x1c], ebx
test eax, eax
jle 0x100183a6
mov eax, dword [esp + 0x34]
xor edi, edi
mov dword [esp + 0x10], edi
mov eax, dword [eax]
imul eax, dword [esp + 0x24]
lea ebx, [eax*2]
mov eax, dword [ecx + 0xa0]
add eax, 0xfffffff9
add ebx, ebp
cmp eax, 0x1b
ja case.0x10017939.8
movzx eax, byte [eax + 0x10018c58]
jmp dword [eax*4 + 0x10018c44]
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x40]
imul dword [esp + 0x50]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0xc0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x40]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x40]
imul dword [esp + 0x54]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0xc8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x40]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x48]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xb0]
movsx edi, word [ebx + eax*2]
mov eax, dword [esp + 0x40]
sar eax, 2
shl edi, 0x10
sar edi, 3
add edi, eax
mov eax, dword [esp + 0x20]
sar eax, 2
add edi, eax
mov eax, dword [esp + 0x1c]
sar eax, 2
add edi, eax
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x58]
mov dword [esp + 0x40], edx
add edi, dword [esp + 0x40]
jmp 0x10017ddb
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x40]
imul dword [esp + 0x50]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0xc0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x40]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x40]
imul dword [esp + 0x54]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0xcc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x40]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x48]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xb0]
movsx edi, word [ebx + eax*2]
mov eax, dword [esp + 0x40]
sar eax, 2
shl edi, 0x10
sar edi, 3
add edi, eax
mov eax, dword [esp + 0x20]
sar eax, 2
add edi, eax
mov eax, dword [esp + 0x1c]
sar eax, 2
add edi, eax
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x58]
mov dword [esp + 0x40], edx
add edi, dword [esp + 0x40]
jmp 0x10017ddb
mov eax, dword [ecx + 0xb0]
movsx edi, word [ebx + eax*2]
mov eax, dword [ecx + 0xcc]
shl edi, 0x10
sar edi, 3
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x54]
mov dword [esp + 0x14], edx
mov eax, dword [esp + 0x50]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x48]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0xcc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x40]
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x48]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xc0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x4c]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
imul dword [esp + 0x58]
mov dword [esp + 0x18], edx
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
sar eax, 2
sar esi, 2
add esi, eax
sar edx, 2
add edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
add edx, esi
sar eax, 2
add eax, edx
jmp 0x10017dd9
mov eax, dword [ecx + 0xb0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x50]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xcc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x48]
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 0xc0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x4c]
mov dword [esp + 0x14], edx
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
imul dword [esp + 0x58]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
sar eax, 2
sar edx, 2
add edx, eax
sar edi, 2
mov eax, dword [esp + 0x1c]
sar eax, 2
add eax, dword [esp + 0x18]
add eax, edx
jmp 0x10017dd9
mov eax, dword [ecx + 0xc0]
test eax, eax
js 0x10017cd0
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x4c]
mov dword [esp + 0x40], edx
mov edi, dword [esp + 0x40]
sar edi, 2
mov dword [esp + 0x10], edi
mov eax, dword [ecx + 0xcc]
test eax, eax
js 0x10017cfe
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x4c]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
sar eax, 2
add edi, eax
mov dword [esp + 0x10], edi
cmp dword [ecx + 0xc0], 0
jl 0x10017d2a
cmp dword [ecx + 0xcc], 0
jl 0x10017d2a
mov dword [esp + 0x40], 0x5a7efa00
mov eax, dword [esp + 0x40]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x40], edx
mov edi, dword [esp + 0x40]
mov eax, dword [ecx + 0xc8]
test eax, eax
js 0x10017d7a
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x30], 0x59999980
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
add eax, eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
sar eax, 2
add edi, eax
mov eax, dword [ecx + 0xb8]
test eax, eax
js 0x10017da4
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x48]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
sar eax, 2
add edi, eax
mov eax, dword [ecx + 0xbc]
test eax, eax
js 0x10017dc9
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x58]
mov dword [esp + 0x40], edx
add edi, dword [esp + 0x40]
mov eax, dword [ecx + 0xb0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
sar eax, 3
add edi, eax
mov esi, dword [esp + 0x60]
mov dword [esp + 0x10], edi
test esi, esi
jle 0x10017e2a
mov eax, dword [esp + 0x38]
cmp dword [eax], 5
jbe 0x10017e11
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
shl eax, 0xa
mov dword [esp + 0x10], eax
mov dword [esp + 0x40], esi
mov eax, dword [esp + 0x40]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x40], edx
mov edi, dword [esp + 0x40]
shl edi, 0xa
mov esi, dword [esp + 0x64]
mov eax, edi
cdq
xor eax, edx
sub eax, edx
cmp dword [esi], eax
cmovg eax, dword [esi]
xor edi, edi
mov dword [esi], eax
mov eax, dword [ecx + 0xa0]
add eax, 0xfffffff9
mov dword [esp + 0x10], edi
cmp eax, 0x1b
ja case.0x10017e5b.8
movzx eax, byte [eax + 0x10018c88]
jmp dword [eax*4 + 0x10018c74]
mov eax, dword [ecx + 0xc4]
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x40], edi
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x40]
imul dword [esp + 0x50]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x40]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x40], edi
mov eax, dword [esp + 0x40]
imul dword [esp + 0x54]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0xc8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x40]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x48]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xb4]
movsx edi, word [ebx + eax*2]
mov eax, dword [esp + 0x40]
sar eax, 2
shl edi, 0x10
sar edi, 3
add edi, eax
mov eax, dword [esp + 0x20]
sar eax, 2
add edi, eax
mov eax, dword [esp + 0x1c]
sar eax, 2
add edi, eax
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x58]
mov dword [esp + 0x40], edx
add edi, dword [esp + 0x40]
jmp 0x10018303
mov edi, dword [esp + 0x4c]
mov dword [esp + 0x40], edi
mov eax, dword [esp + 0x40]
imul dword [esp + 0x50]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0xc4]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x40]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xd0]
mov dword [esp + 0x40], edi
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x40]
imul dword [esp + 0x54]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x30], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x48]
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 0xb4]
movsx edi, word [ebx + eax*2]
mov eax, dword [esp + 0x20]
sar eax, 2
shl edi, 0x10
sar edi, 3
add edi, eax
mov eax, dword [esp + 0x40]
sar eax, 2
add edi, eax
mov eax, dword [esp + 0x1c]
sar eax, 2
add edi, eax
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x58]
mov dword [esp + 0x40], edx
add edi, dword [esp + 0x40]
jmp 0x10018303
mov eax, dword [ecx + 0xb4]
movsx edi, word [ebx + eax*2]
mov eax, dword [ecx + 0xd0]
shl edi, 0x10
sar edi, 3
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov eax, dword [esp + 0x50]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x48]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
mov dword [esp + 0x30], eax
mov eax, dword [ecx + 0xd0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x48]
mov dword [esp + 0x14], edx
mov eax, dword [ecx + 0xc4]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x4c]
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
imul dword [esp + 0x58]
mov dword [esp + 0x18], edx
mov esi, dword [esp + 0x40]
mov eax, dword [esp + 0x20]
mov edx, dword [esp + 0x1c]
sar eax, 2
sar esi, 2
add esi, eax
sar edx, 2
add edx, dword [esp + 0x18]
mov eax, dword [esp + 0x14]
add edx, esi
sar eax, 2
add eax, edx
jmp 0x10018301
mov eax, dword [ecx + 0xb4]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x50]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xd0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
imul dword [esp + 0x54]
mov dword [esp + 0x20], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
imul dword [esp + 0x48]
mov dword [esp + 0x1c], edx
mov eax, dword [ecx + 0xc4]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x14]
imul dword [esp + 0x4c]
mov dword [esp + 0x14], edx
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
imul dword [esp + 0x58]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x40]
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
sar eax, 2
sar edx, 2
add edx, eax
sar edi, 2
mov eax, dword [esp + 0x1c]
sar eax, 2
add eax, dword [esp + 0x18]
add eax, edx
jmp 0x10018301
mov eax, dword [ecx + 0xc4]
test eax, eax
js 0x100181f8
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x4c]
mov dword [esp + 0x40], edx
mov edi, dword [esp + 0x40]
sar edi, 2
mov dword [esp + 0x10], edi
mov eax, dword [ecx + 0xd0]
test eax, eax
js 0x10018226
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x4c]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
sar eax, 2
add edi, eax
mov dword [esp + 0x10], edi
cmp dword [ecx + 0xc4], 0
jl 0x10018252
cmp dword [ecx + 0xd0], 0
jl 0x10018252
mov dword [esp + 0x40], 0x5a7efa00
mov eax, dword [esp + 0x40]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x40], edx
mov edi, dword [esp + 0x40]
mov eax, dword [ecx + 0xc8]
test eax, eax
js 0x100182a2
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x30], 0x59999980
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
add eax, eax
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
sar eax, 2
add edi, eax
mov eax, dword [ecx + 0xb8]
test eax, eax
js 0x100182cc
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x48]
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
sar eax, 2
add edi, eax
mov eax, dword [ecx + 0xbc]
test eax, eax
js 0x100182f1
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x58]
mov dword [esp + 0x40], edx
add edi, dword [esp + 0x40]
mov eax, dword [ecx + 0xb4]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
sar eax, 3
add edi, eax
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x10], edi
test ebx, ebx
jle 0x10018352
mov eax, dword [esp + 0x38]
cmp dword [eax], 5
jbe 0x10018339
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x40], edx
mov eax, dword [esp + 0x40]
shl eax, 0xa
mov dword [esp + 0x10], eax
mov dword [esp + 0x40], ebx
mov eax, dword [esp + 0x40]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x40], edx
mov edi, dword [esp + 0x40]
shl edi, 0xa
mov eax, edi
mov edi, dword [esp + 0x64]
cdq
mov esi, eax
mov eax, dword [esp + 0x24]
xor esi, edx
sub esi, edx
mov edx, dword [esp + 0x2c]
cmp dword [edi], esi
cmovg esi, dword [edi]
inc eax
mov dword [edi], esi
mov dword [esp + 0x24], eax
cmp eax, dword [edx]
jl 0x10017906
lea eax, [ecx + 0x98]
mov dword [esp + 0x18], eax
lea edx, [edi + 4]
lea ebx, [ecx + 0xac]
mov dword [esp + 0x20], edx
lea eax, [ecx + 0xa8]
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], eax
jmp 0x100183a6
mov ebx, dword [esp + 0x1c]
mov eax, dword [edi + 4]
cmp esi, eax
cmovg eax, esi
mov dword [edx], eax
cmp dword [ebx], 1
jbe 0x10018bdc
mov eax, dword [esp + 0x18]
xor edi, edi
mov dword [esp + 0x38], edi
cmp dword [eax], edi
jle 0x10018bdc
nop dword [eax + eax]
mov eax, dword [esp + 0x14]
xor esi, esi
mov dword [esp + 0x10], esi
mov eax, dword [eax]
imul eax, edi
lea ebx, [eax*2]
mov eax, dword [ecx + 0xa0]
add eax, 0xfffffff9
add ebx, ebp
cmp eax, 0x1b
ja case.0x10018401.8
movzx eax, byte [eax + 0x10018cb8]
jmp dword [eax*4 + 0x10018ca4]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x50]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
mov eax, dword [ecx + 0xc0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
imul dword [esp + 0x64]
mov dword [esp + 0x24], edx
mov eax, dword [ecx + 0xc4]
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x50]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
imul dword [esp + 0x64]
mov dword [esp + 0x10], edx
mov eax, dword [ecx + 0xc8]
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x54]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x64]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x48]
mov dword [esp + 0x64], edx
mov eax, dword [ecx + 0xb4]
movsx esi, word [ebx + eax*2]
mov eax, dword [ecx + 0xb0]
shl esi, 0x10
sar esi, 3
movsx eax, word [ebx + eax*2]
shl eax, 0x10
sar eax, 3
add esi, eax
mov eax, dword [esp + 0x64]
add eax, eax
sar eax, 2
add esi, eax
mov eax, dword [esp + 0x40]
add eax, eax
sar eax, 2
add esi, eax
mov eax, dword [esp + 0x24]
sar eax, 2
add esi, eax
mov eax, dword [esp + 0x10]
sar eax, 2
add esi, eax
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x58]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
lea edx, [esi + eax*2]
jmp 0x10018b6a
mov eax, dword [ecx + 0xc0]
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x50]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x64]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xc4]
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x50]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
imul dword [esp + 0x64]
mov dword [esp + 0x24], edx
mov eax, dword [ecx + 0xcc]
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x54]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
imul dword [esp + 0x64]
mov dword [esp + 0x10], edx
mov eax, dword [ecx + 0xd0]
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x54]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
imul dword [esp + 0x64]
mov dword [esp + 0x28], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x48]
mov dword [esp + 0x64], edx
mov eax, dword [ecx + 0xb4]
movsx esi, word [ebx + eax*2]
mov eax, dword [ecx + 0xb0]
shl esi, 0x10
sar esi, 3
movsx eax, word [ebx + eax*2]
shl eax, 0x10
sar eax, 3
add esi, eax
mov eax, dword [esp + 0x64]
add eax, eax
sar eax, 2
add esi, eax
mov eax, dword [esp + 0x40]
sar eax, 2
add esi, eax
mov eax, dword [esp + 0x24]
sar eax, 2
add esi, eax
mov eax, dword [esp + 0x10]
sar eax, 2
add esi, eax
mov eax, dword [esp + 0x28]
sar eax, 2
add esi, eax
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x58]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
lea edx, [esi + eax*2]
jmp 0x10018b6a
mov eax, dword [ecx + 0xb4]
movsx edi, word [ebx + eax*2]
mov eax, dword [ecx + 0xb0]
shl edi, 0x10
sar edi, 3
movsx eax, word [ebx + eax*2]
shl eax, 0x10
sar eax, 3
add edi, eax
mov eax, dword [ecx + 0xcc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x54]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xd0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
imul dword [esp + 0x54]
mov dword [esp + 0x24], edx
mov eax, dword [ecx + 0xcc]
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x48]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
imul dword [esp + 0x64]
mov dword [esp + 0x34], edx
mov eax, dword [ecx + 0xd0]
movzx esi, word [ebx + eax*2]
mov eax, dword [esp + 0x50]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x48]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov dword [esp + 0x64], eax
movsx eax, si
shl eax, 0x10
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
imul dword [esp + 0x64]
mov dword [esp + 0x28], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x48]
mov dword [esp + 0x64], edx
mov eax, dword [ecx + 0xc0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
imul dword [esp + 0x4c]
mov dword [esp + 0x30], edx
mov eax, dword [ecx + 0xc4]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
imul dword [esp + 0x4c]
mov dword [esp + 0x2c], edx
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
imul dword [esp + 0x58]
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x64]
lea edx, [eax + eax]
mov eax, dword [esp + 0x40]
sar eax, 2
sar edx, 2
add edx, eax
mov eax, dword [esp + 0x28]
sar eax, 2
add edx, eax
mov eax, dword [esp + 0x24]
sar eax, 2
add edx, eax
mov eax, dword [esp + 0x10]
lea edx, [edx + eax*2]
mov eax, dword [esp + 0x2c]
sar eax, 2
add edx, eax
mov eax, dword [esp + 0x30]
sar eax, 2
add edx, eax
mov eax, dword [esp + 0x34]
sar eax, 2
add eax, edi
jmp 0x10018b64
mov eax, dword [ecx + 0xb0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
imul dword [esp + 0x50]
mov dword [esp + 0x30], edx
mov eax, dword [ecx + 0xb4]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
imul dword [esp + 0x50]
mov dword [esp + 0x28], edx
mov eax, dword [ecx + 0xcc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
imul dword [esp + 0x54]
mov dword [esp + 0x2c], edx
mov eax, dword [ecx + 0xd0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
imul dword [esp + 0x54]
mov dword [esp + 0x10], edx
mov eax, dword [ecx + 0xb8]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x48]
mov dword [esp + 0x64], edx
mov eax, dword [ecx + 0xc0]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
imul dword [esp + 0x4c]
mov dword [esp + 0x34], edx
mov eax, dword [ecx + 0xc4]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x40]
imul dword [esp + 0x4c]
mov dword [esp + 0x40], edx
mov eax, dword [ecx + 0xbc]
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x24]
imul dword [esp + 0x58]
mov dword [esp + 0x24], edx
mov eax, dword [esp + 0x64]
lea edx, [eax + eax]
mov eax, dword [esp + 0x40]
sar eax, 2
sar edx, 2
add edx, eax
mov eax, dword [esp + 0x34]
sar eax, 2
add edx, eax
mov eax, dword [esp + 0x30]
sar eax, 2
add edx, eax
mov eax, dword [esp + 0x2c]
sar eax, 2
add edx, eax
mov eax, dword [esp + 0x28]
sar eax, 2
add edx, eax
mov eax, dword [esp + 0x24]
lea edx, [edx + eax*2]
mov eax, dword [esp + 0x10]
sar eax, 2
jmp 0x10018b68
mov eax, dword [ecx + 0xc0]
test eax, eax
js 0x100189d4
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x4c]
mov dword [esp + 0x64], edx
mov esi, dword [esp + 0x64]
sar esi, 2
mov dword [esp + 0x10], esi
mov eax, dword [ecx + 0xcc]
lea edi, [ecx + 0xcc]
test eax, eax
js 0x10018a08
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x4c]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
sar eax, 2
add esi, eax
mov dword [esp + 0x10], esi
mov eax, dword [ecx + 0xc4]
mov dword [esp + 0x40], edi
test eax, eax
js 0x10018a44
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x4c]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
sar eax, 2
add esi, eax
lea eax, [ecx + 0xcc]
mov dword [esp + 0x10], esi
mov dword [esp + 0x40], eax
mov eax, dword [ecx + 0xd0]
test eax, eax
js 0x10018a76
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x4c]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
mov edi, dword [esp + 0x40]
sar eax, 2
add esi, eax
mov dword [esp + 0x10], esi
cmp dword [ecx + 0xc0], 0
jl 0x10018a9e
cmp dword [edi], 0
jl 0x10018a9e
mov dword [esp + 0x64], 0x5a7efa00
mov eax, dword [esp + 0x64]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x64], edx
mov esi, dword [esp + 0x64]
mov eax, dword [ecx + 0xc8]
test eax, eax
js 0x10018aee
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x40], 0x59999980
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x40]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
add eax, eax
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x40]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
sar eax, 2
add esi, eax
mov eax, dword [ecx + 0xb8]
test eax, eax
js 0x10018b1a
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x48]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
add eax, eax
sar eax, 2
add esi, eax
mov eax, dword [ecx + 0xbc]
test eax, eax
js 0x10018b42
movsx eax, word [ebx + eax*2]
shl eax, 0x10
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x58]
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
lea esi, [esi + eax*2]
mov eax, dword [ecx + 0xb4]
movsx edx, word [ebx + eax*2]
mov eax, dword [ecx + 0xb0]
shl edx, 0x10
sar edx, 3
movsx eax, word [ebx + eax*2]
shl eax, 0x10
sar eax, 3
add eax, esi
mov edi, dword [esp + 0x38]
add edx, eax
mov ebx, dword [esp + 0x60]
mov dword [esp + 0x10], edx
test ebx, ebx
jle 0x10018bb9
mov eax, dword [esp + 0x1c]
cmp dword [eax], 5
jbe 0x10018ba0
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x64]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x64], edx
mov eax, dword [esp + 0x64]
shl eax, 0xa
mov dword [esp + 0x10], eax
mov dword [esp + 0x64], ebx
mov eax, dword [esp + 0x64]
imul dword [esp + 0x10]
shl edx, 1
mov dword [esp + 0x64], edx
mov edx, dword [esp + 0x64]
shl edx, 0xa
mov ebx, dword [esp + 0x20]
mov eax, edx
cdq
xor eax, edx
sub eax, edx
cmp dword [ebx], eax
cmovg eax, dword [ebx]
inc edi
mov dword [ebx], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x38], edi
cmp edi, dword [eax]
jl 0x100183d0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x2c
ret