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

Disassembly:
sub esp, 0x8c
push ebx
mov ebx, dword [esp + 0x94]
push edi
mov edi, dword [esp + 0xac]
mov eax, dword [ebx + 0x4000c]
sub eax, dword [ebx + 0x40010]
sub eax, dword [ebx + 0x40004]
mov ecx, dword [ebx + 0x40000]
add eax, ecx
cmp eax, 0x10000
jb 0x10186fb7
push dword [esp + 0xb0]
mov dword [ebx + 0x4001c], 0
push edi
push dword [esp + 0xb0]
push dword [esp + 0xb0]
push dword [esp + 0xb0]
push dword [esp + 0xb0]
push ebx
call fcn.10189690
add esp, 0x1c
pop edi
pop ebx
add esp, 0x8c
ret
test eax, eax
mov eax, dword [esp + 0xa4]
push esi
jne 0x10187023
cmp dword [eax], 0x1000
jle 0x10187023
push 0x40020
push dword [ebx + 0x4001c]
push ebx
call fcn.1010efe0
mov esi, dword [esp + 0xac]
push esi
push ebx
call fcn.1018e1e0
push dword [esp + 0xc8]
mov eax, dword [esp + 0xc0]
push edi
push dword [esp + 0xc8]
mov word [ebx + 0x40018], di
push eax
push dword [esp + 0xc8]
push esi
push ebx
call fcn.10189690
add esp, 0x30
pop esi
pop edi
pop ebx
add esp, 0x8c
ret
mov edx, dword [esp + 0xac]
push ebp
mov ebp, dword [esp + 0xb8]
cmp ebp, 2
jne 0x1018704b
cmp edx, 1
jge 0x1018704b
pop ebp
pop esi
xor ebx, ebx
pop edi
mov eax, ebx
pop ebx
add esp, 0x8c
ret
mov eax, dword [eax]
cmp eax, 0x7e000000
ja 0x1018703c
add eax, ecx
cmp edi, 1
mov dword [ebx + 0x40000], eax
mov ecx, 9
cmovge ecx, edi
mov eax, 0xc
cmp ecx, eax
cmovg ecx, eax
lea eax, [ecx + ecx*2]
movq xmm0, qword [eax*4 + 0x102ab400]
mov esi, dword [eax*4 + 0x102ab408]
xor eax, eax
cmp byte [ebx + 0x4001a], al
movq qword [esp + 0x90], xmm0
setne al
cmp dword [esp + 0x90], 0
jne 0x10189634
mov edi, dword [esp + 0xac]
xor eax, eax
cmp dword [esp + 0x94], 0x80
mov dword [esp + 0x60], 0
setg al
mov dword [esp + 0x40], 0
mov ecx, dword [edi]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xa4]
mov ebx, eax
mov ebp, eax
mov dword [esp + 0x18], ebx
mov dword [esp + 0x38], ebp
mov dword [esp + 0x50], 0
lea esi, [ecx + eax]
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x2c], esi
mov esi, eax
add eax, edx
mov dword [esp + 0x14], esi
xor edx, edx
cmp dword [esp + 0xb8], 2
mov dword [edi], edx
mov dword [esp + 0x84], edx
lea edi, [eax - 5]
mov dword [esp + 0x80], edx
cmovne edi, eax
mov dword [esp + 0x74], edi
cmp ecx, 0xd
jl 0x1018937d
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff4
cmp ebx, eax
ja 0x1018937d
nop dword [eax]
nop word [eax + eax]
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x24], 3
mov edi, dword [ecx + 0x4000c]
mov esi, edi
mov ebp, dword [ecx + 0x40004]
sub esi, ebp
mov eax, dword [ecx + 0x4001c]
add esi, ebx
mov ebx, dword [ecx + 0x40010]
mov edx, ebx
mov dword [esp + 0x30], eax
mov dword [esp + 0x64], esi
lea ecx, [esi - 0xffff]
mov dword [esp + 0x54], ebx
lea eax, [ebx + 0x10000]
mov dword [esp + 0x28], ebp
cmp eax, esi
mov dword [esp + 0x10], edi
mov esi, dword [esp + 0xa0]
cmovbe edx, ecx
mov dword [esp + 0x20], edx
mov eax, dword [esi + 0x40008]
mov esi, dword [esi + 0x40014]
mov dword [esp + 0x48], eax
sub eax, ebx
mov ebx, dword [esp + 0x64]
add eax, edi
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
xor eax, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x4c], eax
mov dword [esp + 0x58], eax
cmp esi, ebx
jae 0x10187249
mov edi, esi
sub edi, dword [esp + 0x10]
add edi, ebp
mov ebp, dword [esp + 0xa0]
nop dword [eax]
imul eax, dword [edi], 0x9e3779b1
lea edi, [edi + 1]
mov ecx, esi
shr eax, 0x11
lea edx, [eax*4]
mov eax, 0xffff
sub ecx, dword [edx + ebp]
cmp ecx, 0xffff
cmova ecx, eax
movzx eax, si
mov word [ebp + eax*2 + 0x20000], cx
mov dword [edx + ebp], esi
inc esi
cmp esi, ebx
jb 0x10187200
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x20]
mov esi, dword [esp + 0xa0]
mov eax, dword [esp + 0x18]
mov dword [esi + 0x40014], ebx
imul eax, dword [eax], 0x9e3779b1
shr eax, 0x11
mov ebx, dword [esi + eax*4]
mov dword [esp + 0x1c], ebx
cmp ebx, edx
jb 0x10187722
mov eax, dword [esp + 0x48]
mov edx, eax
mov esi, dword [esp + 0x54]
sub edx, esi
mov dword [esp + 0x6c], edx
jmp 0x1018728c
mov ecx, dword [esp + 0x34]
mov ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x3c]
test edx, edx
jle 0x10187879
dec edx
mov dword [esp + 0x3c], edx
cmp ebx, edi
jb 0x101873ed
mov edx, dword [esp + 0x24]
mov eax, ebx
mov esi, dword [esp + 0x18]
sub eax, edi
lea edi, [eax + ebp]
mov ax, word [edx + esi - 1]
cmp ax, word [edi + edx - 1]
jne 0x1018733d
cmp dword [edi], ecx
jne 0x1018733d
mov ebp, dword [esp + 0x2c]
lea ecx, [esi + 4]
add ebp, 0xfffffffb
lea edx, [edi + 4]
mov ebx, ecx
lea esi, [ebp - 3]
cmp ecx, esi
jae 0x10187304
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x101873d3
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x10187304
nop
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x101873de
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x101872f0
lea eax, [ebp - 1]
cmp ecx, eax
jae 0x10187319
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10187319
add ecx, 2
add edx, 2
cmp ecx, ebp
jae 0x10187324
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x10187324
inc ecx
mov eax, ecx
sub eax, ebx
mov ebx, dword [esp + 0x1c]
add eax, 4
cmp eax, dword [esp + 0x24]
jle 0x1018733d
mov dword [esp + 0x24], eax
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x10]
cmp dword [esp + 0x88], 0
je 0x10187551
mov ecx, dword [esp + 0xa0]
movzx eax, bx
cmp word [ecx + eax*2 + 0x20000], 1
jne 0x10187551
mov esi, dword [esp + 0x4c]
lea ebp, [ebx - 1]
test esi, esi
jne 0x10187586
mov ecx, dword [esp + 0x34]
xor ebx, ebx
mov eax, ecx
mov edx, ecx
shr eax, 0x18
cmp cl, al
movzx eax, cx
sete bl
shr edx, 0x10
xor ecx, ecx
cmp eax, edx
sete cl
test ecx, ebx
je 0x10187545
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x34]
add eax, 0xfffffffb
push esi
push eax
mov eax, dword [esp + 0x20]
add eax, 4
mov dword [esp + 0x54], 2
push eax
call fcn.1018e0c0
mov ebx, dword [esp + 0x28]
add esp, 0xc
add eax, 4
mov dword [esp + 0x58], eax
jmp 0x1018758f
bsf eax, eax
shr eax, 3
jmp 0x10187328
bsf eax, eax
shr eax, 3
sub eax, ebx
add eax, ecx
jmp 0x10187328
mov edx, ebx
sub edx, esi
add edx, eax
lea eax, [edi - 4]
cmp ebx, eax
ja 0x10187341
cmp dword [edx], ecx
jne 0x10187341
mov ecx, dword [esp + 0x18]
sub edi, ebx
mov eax, dword [esp + 0x2c]
add edi, ecx
add eax, 0xfffffffb
cmp edi, eax
cmova edi, eax
add ecx, 4
add edx, 4
mov ebx, ecx
lea esi, [edi - 3]
cmp ecx, esi
jae 0x10187454
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x1018750e
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x10187454
nop dword [eax]
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x10187519
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x10187440
lea eax, [edi - 1]
cmp ecx, eax
jae 0x10187469
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10187469
add ecx, 2
add edx, 2
cmp ecx, edi
jae 0x10187474
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x10187474
inc ecx
mov eax, ecx
sub eax, ebx
mov ecx, dword [esp + 0x18]
lea ebx, [eax + 4]
add ecx, ebx
cmp ecx, edi
jne 0x101874ed
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
cmp edi, esi
jae 0x101874ed
add esi, 0xfffffffd
mov edx, ebp
mov edi, ecx
cmp ecx, esi
jae 0x101874c0
mov eax, dword [ebp]
xor eax, dword [ecx]
jne 0x10187528
add ecx, 4
lea edx, [ebp + 4]
cmp ecx, esi
jae 0x101874c0
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x10187530
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x101874b0
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
lea eax, [esi - 1]
cmp ecx, eax
jae 0x101874dc
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x101874dc
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x101874e7
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x101874e7
inc ecx
mov eax, ecx
sub eax, edi
add ebx, eax
mov edi, dword [esp + 0x10]
cmp ebx, dword [esp + 0x24]
jle 0x1018753c
mov eax, ebp
mov dword [esp + 0x24], ebx
mov ebx, dword [esp + 0x1c]
sub eax, edi
add eax, ebx
mov dword [esp + 0x60], eax
jmp 0x10187341
bsf eax, eax
shr eax, 3
jmp 0x10187478
bsf eax, eax
shr eax, 3
sub eax, ebx
add eax, ecx
jmp 0x10187478
bsf eax, eax
shr eax, 3
jmp 0x101874eb
bsf eax, eax
shr eax, 3
sub eax, edi
add eax, ecx
jmp 0x101874eb
mov ebx, dword [esp + 0x1c]
jmp 0x10187341
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x4c], 1
mov ecx, dword [esp + 0xa0]
mov edi, dword [esp + 0x10]
movzx eax, bx
movzx eax, word [ecx + eax*2 + 0x20000]
sub ebx, eax
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x48]
mov esi, dword [esp + 0x54]
mov dword [esp + 0x1c], ebx
cmp ebx, edx
jae 0x10187284
jmp 0x10187722
cmp esi, 2
jne 0x10187551
mov esi, dword [esp + 0x34]
cmp ebp, dword [esp + 0x20]
jb 0x10187551
mov eax, edi
sub eax, ebp
dec eax
cmp eax, 3
jb 0x10187551
mov eax, dword [esp + 0x28]
sub eax, edi
cmp ebp, edi
cmovb eax, dword [esp + 0x6c]
cmp dword [eax + ebp], esi
lea edi, [eax + ebp]
jne 0x10187551
mov ebx, dword [esp + 0x2c]
lea eax, [edi + 4]
add ebx, 0xfffffffb
cmp ebp, dword [esp + 0x10]
push esi
cmovb ebx, dword [esp + 0x6c]
push ebx
push eax
call fcn.1018e0c0
mov ecx, dword [esp + 0x1c]
add esp, 0xc
lea esi, [eax + 4]
cmp ebp, ecx
jae 0x10187663
lea eax, [esi + edi]
cmp eax, ebx
jne 0x10187663
mov ebx, dword [esp + 0x34]
mov ecx, esi
and ecx, 3
mov eax, ebx
shl ecx, 3
test ecx, ecx
je 0x101875fc
rol eax, cl
push eax
mov eax, dword [esp + 0x30]
add eax, 0xfffffffb
push eax
push dword [esp + 0x30]
call fcn.1018e0c0
add esi, eax
mov eax, dword [esp + 0x34]
cmp ebp, dword [esp + 0x1c]
push ebx
cmovb eax, dword [esp + 0x58]
push eax
push edi
call fcn.1018e190
add esp, 0x18
mov ebx, eax
mov edi, dword [esp + 0x10]
mov edx, dword [esp + 0x58]
mov eax, ebp
sub eax, ebx
mov ecx, esi
mov ebx, dword [esp + 0x20]
cmp eax, ebx
cmova ebx, eax
sub ecx, ebx
add ecx, ebp
cmp ecx, edx
jb 0x101876c3
cmp esi, edx
ja 0x101876c3
sub esi, edx
mov eax, edi
add esi, ebp
mov ebx, edi
sub eax, esi
dec eax
cmp eax, 3
cmovae ebx, esi
jmp 0x10187569
mov eax, dword [esp + 0x28]
cmp ebp, ecx
mov ebx, dword [esp + 0x34]
cmovb eax, dword [esp + 0x48]
push ebx
push eax
push edi
call fcn.1018e190
add esp, 0xc
mov ebx, eax
cmp ebp, dword [esp + 0x10]
jb 0x1018762a
sub edi, ebx
cmp edi, dword [esp + 0x28]
mov edi, dword [esp + 0x10]
jne 0x1018762e
cmp dword [esp + 0x54], edi
jae 0x1018762e
mov eax, dword [esp + 0x34]
mov ecx, ebx
neg ecx
and ecx, 3
shl ecx, 3
test ecx, ecx
je 0x101876ab
rol eax, cl
push eax
push dword [esp + 0x4c]
push dword [esp + 0x70]
call fcn.1018e190
add esp, 0xc
add ebx, eax
jmp 0x1018762e
mov esi, edi
sub esi, ebx
lea eax, [esi - 1]
cmp eax, 3
jae 0x101876d6
mov ebx, edi
jmp 0x10187569
cmp ecx, dword [esp + 0x58]
cmovb edx, ecx
cmp dword [esp + 0x24], edx
jae 0x10187704
mov eax, dword [esp + 0x18]
mov ebp, dword [esp + 0x28]
sub eax, ebp
add eax, esi
cmp eax, 0xffff
ja 0x1018771e
mov eax, ebx
mov dword [esp + 0x24], edx
sub eax, edi
add eax, ebp
mov dword [esp + 0x60], eax
mov ecx, dword [esp + 0xa0]
movzx eax, bx
movzx eax, word [ecx + eax*2 + 0x20000]
cmp eax, ebx
jbe 0x10187567
mov edx, dword [esp + 0x20]
mov edi, dword [esp + 0x3c]
test edi, edi
jle 0x10187879
mov eax, dword [esp + 0x64]
sub eax, edx
cmp eax, 0xffff
jae 0x10187879
mov eax, dword [esp + 0x18]
mov ebx, dword [esp + 0x30]
imul eax, dword [eax], 0x9e3779b1
mov edx, dword [ebx + 0x40004]
mov ecx, dword [ebx + 0x40000]
mov esi, dword [ebx + 0x4000c]
sub ecx, edx
add ecx, esi
mov dword [esp + 0x4c], esi
shr eax, 0x11
mov dword [esp + 0x6c], edx
mov dword [esp + 0x78], ecx
mov ebx, dword [ebx + eax*4]
mov ebp, ebx
mov eax, dword [esp + 0x64]
sub ebp, ecx
add ebp, dword [esp + 0x20]
sub eax, ebp
cmp eax, 0xffff
ja 0x10187879
nop
mov eax, edi
dec edi
mov dword [esp + 0x3c], edi
test eax, eax
je 0x10187879
mov eax, dword [esp + 0x34]
sub edx, esi
add edx, ebx
cmp dword [edx], eax
jne 0x10187851
mov eax, dword [esp + 0x2c]
mov esi, ecx
mov ecx, dword [esp + 0x18]
sub esi, ebx
add esi, ecx
add eax, 0xfffffffb
cmp esi, eax
cmova esi, eax
add ecx, 4
add edx, 4
mov dword [esp + 0x68], ecx
lea edi, [esi - 3]
cmp ecx, edi
jae 0x10187804
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x10187890
add ecx, 4
add edx, 4
cmp ecx, edi
jae 0x10187804
nop word [eax + eax]
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x10187898
add ecx, 4
add edx, 4
cmp ecx, edi
jb 0x101877f0
lea eax, [esi - 1]
cmp ecx, eax
jae 0x10187819
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10187819
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x10187824
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x10187824
inc ecx
mov eax, ecx
sub eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x78]
add eax, 4
mov esi, dword [esp + 0x4c]
mov edi, dword [esp + 0x3c]
cmp eax, dword [esp + 0x24]
jle 0x10187851
mov dword [esp + 0x24], eax
mov eax, ebp
sub eax, dword [esp + 0x10]
add eax, dword [esp + 0x28]
mov dword [esp + 0x60], eax
mov edx, dword [esp + 0x30]
movzx eax, bx
movzx eax, word [edx + eax*2 + 0x20000]
mov edx, dword [esp + 0x6c]
sub ebx, eax
sub ebp, eax
mov eax, dword [esp + 0x64]
sub eax, ebp
cmp eax, 0xffff
jbe 0x10187790
mov ecx, dword [esp + 0x24]
cmp ecx, 4
jge 0x101878a6
mov ebx, dword [esp + 0x18]
mov ebp, dword [esp + 0x38]
inc ebx
jmp 0x10189362
bsf eax, eax
shr eax, 3
jmp 0x1018782a
bsf eax, eax
shr eax, 3
sub eax, dword [esp + 0x68]
add eax, ecx
jmp 0x1018782a
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x60]
mov dword [esp + 0x70], esi
mov dword [esp + 0x8c], eax
mov dword [esp + 0x6c], ecx
nop dword [eax]
mov edx, dword [esp + 0x2c]
lea eax, [ecx + esi]
add edx, 0xfffffff4
cmp eax, edx
ja 0x101891e1
mov ebx, dword [esp + 0xa0]
lea edx, [eax - 2]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x20], edx
mov ecx, dword [ebx + 0x40004]
mov edi, dword [ebx + 0x4000c]
mov esi, edi
mov eax, dword [ebx + 0x4001c]
sub esi, ecx
mov ebx, dword [ebx + 0x40010]
add esi, edx
mov dword [esp + 0x7c], eax
mov ebp, ebx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x58], esi
lea eax, [ebx + 0x10000]
mov dword [esp + 0x48], ebx
cmp eax, esi
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0xa0]
lea ecx, [esi - 0xffff]
cmovbe ebp, ecx
mov dword [esp + 0x1c], ebp
mov ecx, dword [eax + 0x40008]
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x3c], ecx
mov ebx, dword [esp + 0x58]
add eax, edi
mov dword [esp + 0x68], eax
mov eax, edx
sub eax, dword [esp + 0x18]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x54], eax
mov eax, dword [edx]
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x4c], eax
mov dword [esp + 0x78], eax
mov esi, dword [edx + 0x40014]
cmp esi, ebx
jae 0x101879dc
mov edi, esi
mov ebp, edx
sub edi, dword [esp + 0x10]
add edi, dword [esp + 0x28]
nop
imul eax, dword [edi], 0x9e3779b1
lea edi, [edi + 1]
mov ecx, esi
shr eax, 0x11
lea edx, [eax*4]
mov eax, 0xffff
sub ecx, dword [edx + ebp]
cmp ecx, 0xffff
cmova ecx, eax
movzx eax, si
mov word [ebp + eax*2 + 0x20000], cx
mov dword [edx + ebp], esi
inc esi
cmp esi, ebx
jb 0x10187990
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x3c]
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0xa0]
mov esi, dword [esp + 0x20]
mov dword [edx + 0x40014], ebx
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov ebx, dword [edx + eax*4]
mov dword [esp + 0x34], ebx
cmp ebx, ebp
jb 0x10187f7b
mov eax, dword [esp + 0x48]
mov edx, ecx
sub edx, eax
mov dword [esp + 0x5c], edx
jmp 0x10187a14
mov esi, dword [esp + 0x20]
mov edx, dword [esp + 0x54]
test edx, edx
jle 0x1018812e
dec edx
mov ebp, ebx
mov dword [esp + 0x54], edx
cmp ebx, edi
jb 0x10187b47
mov esi, dword [esp + 0x18]
sub ebp, edi
mov eax, dword [esp + 0x44]
add ebp, dword [esp + 0x28]
mov edx, dword [esp + 0x64]
mov ecx, ebp
sub ecx, edx
mov ax, word [eax + esi - 1]
mov esi, dword [esp + 0x44]
cmp ax, word [ecx + esi - 1]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
jne 0x10187cee
cmp dword [ebp], ecx
jne 0x10187cee
xor edi, edi
test edx, edx
je 0x10187aa1
mov edx, dword [esp + 0x18]
mov eax, dword [esp + 0x28]
sub edx, esi
sub eax, ebp
cmp edx, eax
cmovle edx, eax
test edx, edx
jns 0x10187aa1
lea ecx, [ebp - 1]
sub esi, ebp
nop word [eax + eax]
mov al, byte [esi + ecx]
cmp al, byte [ecx]
jne 0x10187a9d
dec edi
dec ecx
cmp edi, edx
jg 0x10187a90
mov esi, dword [esp + 0x20]
lea ecx, [esi + 4]
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
lea edx, [ebp + 4]
add esi, 0xfffffffd
mov ebx, ecx
cmp ecx, esi
jae 0x10187ad7
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x10187b33
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x10187ad7
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x10187b3b
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x10187ac7
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
lea eax, [esi - 1]
cmp ecx, eax
jae 0x10187af3
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10187af3
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x10187afe
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x10187afe
inc ecx
mov eax, ecx
sub eax, ebx
mov ebx, dword [esp + 0x34]
sub eax, edi
mov ecx, dword [esp + 0x30]
add eax, 4
cmp eax, dword [esp + 0x44]
jle 0x10187b2a
mov dword [esp + 0x44], eax
lea eax, [edi + ebp]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x20]
add eax, edi
mov dword [esp + 0x40], eax
mov edi, dword [esp + 0x10]
jmp 0x10187cee
bsf eax, eax
shr eax, 3
jmp 0x10187b02
bsf eax, eax
shr eax, 3
sub eax, ebx
add eax, ecx
jmp 0x10187b02
sub ebp, eax
lea eax, [edi - 4]
add ebp, ecx
mov ecx, dword [esp + 0x30]
cmp ebx, eax
ja 0x10187cee
cmp dword [ebp], ecx
jne 0x10187cee
mov eax, dword [esp + 0x2c]
lea ecx, [esi + 4]
sub edi, ebx
lea edx, [ebp + 4]
add edi, esi
add eax, 0xfffffffb
cmp edi, eax
mov ebx, ecx
cmova edi, eax
lea esi, [edi - 3]
cmp ecx, esi
jae 0x10187baa
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x10187cb6
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x10187baa
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x10187cc1
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x10187b96
lea eax, [edi - 1]
cmp ecx, eax
jae 0x10187bbf
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10187bbf
add ecx, 2
add edx, 2
cmp ecx, edi
jae 0x10187bca
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x10187bca
inc ecx
mov eax, ecx
sub eax, ebx
mov ecx, dword [esp + 0x20]
lea ebx, [eax + 4]
add ecx, ebx
cmp ecx, edi
jne 0x10187c51
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
cmp edi, esi
jae 0x10187c51
mov eax, dword [esp + 0x28]
add esi, 0xfffffffd
mov edx, eax
mov edi, ecx
cmp ecx, esi
jae 0x10187c24
mov eax, dword [eax]
xor eax, dword [ecx]
jne 0x10187cd0
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x10187c24
nop dword [eax]
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x10187cdb
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x10187c10
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
lea eax, [esi - 1]
cmp ecx, eax
jae 0x10187c40
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10187c40
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x10187c4b
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x10187c4b
inc ecx
mov eax, ecx
sub eax, edi
add ebx, eax
xor edx, edx
cmp dword [esp + 0x64], edx
je 0x10187c84
mov esi, dword [esp + 0x18]
mov eax, dword [esp + 0x3c]
mov edi, dword [esp + 0x20]
sub eax, ebp
sub esi, edi
cmp esi, eax
cmovle esi, eax
test esi, esi
jns 0x10187c84
lea ecx, [edi - 1]
sub ebp, edi
mov al, byte [ecx]
cmp al, byte [ecx + ebp]
jne 0x10187c84
dec edx
dec ecx
cmp edx, esi
jg 0x10187c77
mov edi, dword [esp + 0x10]
sub ebx, edx
mov ecx, dword [esp + 0x30]
cmp ebx, dword [esp + 0x44]
jle 0x10187cea
mov eax, dword [esp + 0x20]
mov ebp, edx
sub ebp, edi
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x34]
add ebp, ebx
add ebp, dword [esp + 0x28]
add eax, edx
mov dword [esp + 0x50], ebp
mov dword [esp + 0x40], eax
jmp 0x10187cee
bsf eax, eax
shr eax, 3
jmp 0x10187bce
bsf eax, eax
shr eax, 3
sub eax, ebx
add eax, ecx
jmp 0x10187bce
bsf eax, eax
shr eax, 3
jmp 0x10187c4f
bsf eax, eax
shr eax, 3
sub eax, edi
add eax, ecx
jmp 0x10187c4f
mov ebx, dword [esp + 0x34]
cmp dword [esp + 0x88], 0
je 0x10187d7d
mov edx, dword [esp + 0xa0]
movzx eax, bx
cmp word [edx + eax*2 + 0x20000], 1
jne 0x10187d7d
mov esi, dword [esp + 0x4c]
lea ebp, [ebx - 1]
test esi, esi
jne 0x10187db2
mov eax, ecx
xor ebx, ebx
shr eax, 0x18
mov edx, ecx
cmp cl, al
movzx eax, cx
sete bl
shr edx, 0x10
xor ecx, ecx
cmp eax, edx
sete cl
test ecx, ebx
je 0x10187d71
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
add eax, 0xfffffffb
push esi
push eax
mov eax, dword [esp + 0x28]
add eax, 4
mov dword [esp + 0x54], 2
push eax
call fcn.1018e0c0
mov ebx, dword [esp + 0x40]
add esp, 0xc
add eax, 4
mov dword [esp + 0x78], eax
jmp 0x10187dbb
mov ebx, dword [esp + 0x34]
mov dword [esp + 0x4c], 1
mov ecx, dword [esp + 0xa0]
movzx eax, bx
movzx eax, word [ecx + eax*2 + 0x20000]
sub ebx, eax
mov dword [esp + 0x34], ebx
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x1c]
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x48]
cmp ebx, ebp
jae 0x10187a10
jmp 0x10187f7b
cmp esi, 2
jne 0x10187d7d
mov esi, dword [esp + 0x30]
cmp ebp, dword [esp + 0x1c]
jb 0x10187d7d
mov eax, edi
sub eax, ebp
dec eax
cmp eax, 3
jb 0x10187d7d
cmp ebp, edi
jae 0x10187dd5
mov eax, dword [esp + 0x5c]
jmp 0x10187ddb
mov eax, dword [esp + 0x28]
sub eax, edi
cmp dword [eax + ebp], esi
lea edi, [eax + ebp]
jne 0x10187d7d
mov ebx, dword [esp + 0x2c]
lea eax, [edi + 4]
add ebx, 0xfffffffb
cmp ebp, dword [esp + 0x10]
push esi
cmovb ebx, dword [esp + 0x6c]
push ebx
push eax
call fcn.1018e0c0
mov ecx, dword [esp + 0x1c]
add esp, 0xc
lea esi, [eax + 4]
cmp ebp, ecx
jae 0x10187e57
lea eax, [esi + edi]
cmp eax, ebx
jne 0x10187e57
mov ebx, dword [esp + 0x30]
mov ecx, esi
and ecx, 3
mov eax, ebx
shl ecx, 3
test ecx, ecx
je 0x10187e27
rol eax, cl
push eax
mov eax, dword [esp + 0x30]
add eax, 0xfffffffb
push eax
push dword [esp + 0x30]
call fcn.1018e0c0
add esi, eax
mov eax, dword [esp + 0x34]
cmp ebp, dword [esp + 0x1c]
push ebx
cmovb eax, dword [esp + 0x4c]
push eax
push edi
call fcn.1018e190
add esp, 0x18
mov ebx, eax
jmp 0x10187eb0
mov eax, dword [esp + 0x28]
cmp ebp, ecx
mov ebx, dword [esp + 0x30]
cmovb eax, dword [esp + 0x3c]
push ebx
push eax
push edi
call fcn.1018e190
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov ebx, eax
cmp ebp, ecx
jb 0x10187eb4
sub edi, ebx
cmp edi, dword [esp + 0x28]
jne 0x10187eb4
cmp dword [esp + 0x48], ecx
jae 0x10187eb4
mov eax, dword [esp + 0x30]
mov ecx, ebx
neg ecx
and ecx, 3
shl ecx, 3
test ecx, ecx
je 0x10187e9d
rol eax, cl
push eax
push dword [esp + 0x40]
push dword [esp + 0x70]
call fcn.1018e190
add esp, 0xc
add ebx, eax
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x78]
mov eax, ebp
sub eax, ebx
mov edx, esi
mov ebx, dword [esp + 0x1c]
cmp eax, ebx
cmova ebx, eax
sub edx, ebx
mov dword [esp + 0x34], ebx
add edx, ebp
cmp edx, edi
jb 0x10187ef5
cmp esi, edi
ja 0x10187ef5
sub esi, edi
mov edi, dword [esp + 0x10]
add esi, ebp
mov eax, edi
sub eax, esi
mov ebx, edi
dec eax
cmp eax, 3
cmovae ebx, esi
mov dword [esp + 0x34], ebx
jmp 0x10187d99
sub ecx, ebx
lea eax, [ecx - 1]
cmp eax, 3
jae 0x10187f0e
mov edi, dword [esp + 0x10]
mov ebx, edi
mov dword [esp + 0x34], ebx
jmp 0x10187d99
cmp dword [esp + 0x64], 0
jne 0x10187d95
cmp edx, edi
mov eax, edi
cmovb eax, edx
cmp dword [esp + 0x44], eax
jae 0x10187f52
mov edx, dword [esp + 0x28]
sub ecx, edx
mov esi, dword [esp + 0x20]
add ecx, esi
cmp ecx, 0xffff
ja 0x10187f77
mov edi, dword [esp + 0x10]
mov dword [esp + 0x44], eax
mov eax, ebx
sub eax, edi
mov dword [esp + 0x40], esi
add eax, edx
mov dword [esp + 0x50], eax
jmp 0x10187f56
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0xa0]
movzx eax, bx
movzx eax, word [ecx + eax*2 + 0x20000]
cmp eax, ebx
ja 0x10187f77
sub ebx, eax
mov dword [esp + 0x34], ebx
jmp 0x10187d99
mov ebp, dword [esp + 0x1c]
mov edi, dword [esp + 0x54]
test edi, edi
jle 0x1018812e
mov eax, dword [esp + 0x58]
sub eax, ebp
cmp eax, 0xffff
jae 0x1018812e
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x7c]
imul eax, dword [eax], 0x9e3779b1
mov ebx, dword [ecx + 0x40004]
mov esi, dword [ecx + 0x40000]
mov ebp, dword [ecx + 0x4000c]
sub esi, ebx
add esi, ebp
mov dword [esp + 0x5c], ebp
shr eax, 0x11
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x68], esi
mov ecx, dword [ecx + eax*4]
mov edx, ecx
mov eax, dword [esp + 0x58]
sub edx, esi
add edx, dword [esp + 0x1c]
sub eax, edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x48], edx
cmp eax, 0xffff
ja 0x1018812e
nop
mov eax, edi
dec edi
mov dword [esp + 0x54], edi
test eax, eax
je 0x1018812e
mov eax, ecx
sub eax, ebp
lea ebp, [eax + ebx]
mov eax, dword [esp + 0x30]
cmp dword [ebp], eax
jne 0x101880fe
mov eax, dword [esp + 0x20]
lea edx, [ebp + 4]
mov edi, esi
sub edi, ecx
mov ecx, dword [esp + 0x2c]
add ecx, 0xfffffffb
add edi, eax
cmp edi, ecx
cmova edi, ecx
lea ecx, [eax + 4]
mov ebx, ecx
lea esi, [edi - 3]
cmp ecx, esi
jae 0x10188064
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x10188192
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x10188064
nop dword [eax]
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x1018819d
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x10188050
lea eax, [edi - 1]
cmp ecx, eax
jae 0x10188079
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10188079
add ecx, 2
add edx, 2
cmp ecx, edi
jae 0x10188084
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x10188084
inc ecx
mov eax, ecx
sub eax, ebx
xor edx, edx
lea ebx, [eax + 4]
cmp dword [esp + 0x64], edx
je 0x101880c2
mov eax, dword [esp + 0x4c]
mov edi, ebp
mov esi, dword [esp + 0x18]
neg edi
sub esi, dword [esp + 0x20]
add eax, edi
cmp esi, eax
cmovle esi, eax
test esi, esi
jns 0x101880c2
add edi, dword [esp + 0x20]
lea ecx, [ebp - 1]
mov al, byte [edi + ecx]
cmp al, byte [ecx]
jne 0x101880c2
dec edx
dec ecx
cmp edx, esi
jg 0x101880b5
mov ecx, dword [esp + 0x3c]
sub ebx, edx
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x54]
cmp ebx, dword [esp + 0x44]
jle 0x101880f6
mov eax, edx
mov dword [esp + 0x44], ebx
sub eax, dword [esp + 0x10]
add eax, dword [esp + 0x48]
add eax, dword [esp + 0x28]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x20]
add eax, edx
mov dword [esp + 0x40], eax
mov ebx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
mov ebp, dword [esp + 0x7c]
movzx eax, cx
movzx eax, word [ebp + eax*2 + 0x20000]
mov ebp, dword [esp + 0x5c]
sub ecx, eax
sub edx, eax
mov dword [esp + 0x3c], ecx
mov eax, dword [esp + 0x58]
sub eax, edx
mov dword [esp + 0x48], edx
cmp eax, 0xffff
jbe 0x10187ff0
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x24]
mov esi, dword [esp + 0x18]
cmp edi, ebp
je 0x101891e1
mov ecx, dword [esp + 0x70]
mov ebx, dword [esp + 0x40]
cmp ecx, esi
jae 0x10188170
mov edx, dword [esp + 0x6c]
lea eax, [edx + esi]
cmp ebx, eax
jae 0x10188170
mov eax, dword [esp + 0x8c]
mov esi, ecx
mov ebp, edx
mov dword [esp + 0x18], esi
mov dword [esp + 0x60], eax
mov dword [esp + 0x24], ebp
mov eax, ebx
sub eax, esi
cmp eax, 3
jge 0x101881b0
mov edx, dword [esp + 0x50]
mov ecx, edi
mov esi, ebx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x18], esi
mov dword [esp + 0x60], edx
jmp 0x101878c0
bsf eax, eax
shr eax, 3
jmp 0x10188088
bsf eax, eax
shr eax, 3
sub eax, ebx
add eax, ecx
jmp 0x10188088
mov dword [esp + 0x44], edi
mov eax, ebx
sub eax, esi
cmp eax, 0x12
jge 0x101881f3
cmp ebp, 0x12
lea ecx, [ebx - 4]
mov eax, 0x12
mov edx, ebp
cmovg edx, eax
add ecx, edi
lea eax, [edx + esi]
cmp eax, ecx
jbe 0x101881db
mov edx, edi
sub edx, esi
add edx, 0xfffffffc
add edx, ebx
sub edx, ebx
add edx, esi
test edx, edx
jle 0x101881f3
add dword [esp + 0x50], edx
add ebx, edx
sub edi, edx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], edi
mov ecx, dword [esp + 0x2c]
lea eax, [edi + ebx]
add ecx, 0xfffffff4
cmp eax, ecx
ja 0x10188eed
mov ebx, dword [esp + 0xa0]
lea edx, [eax - 3]
mov dword [esp + 0x28], edi
mov dword [esp + 0x20], edx
mov dword [esp + 0x58], 0
mov ecx, dword [ebx + 0x40004]
mov edi, dword [ebx + 0x4000c]
mov esi, edi
mov eax, dword [ebx + 0x4001c]
sub esi, ecx
mov ebx, dword [ebx + 0x40010]
add esi, edx
mov dword [esp + 0x68], eax
mov ebp, ebx
mov dword [esp + 0x34], ecx
mov dword [esp + 0x4c], esi
lea eax, [ebx + 0x10000]
mov dword [esp + 0x78], ebx
cmp eax, esi
mov dword [esp + 0x10], edi
mov eax, dword [esp + 0xa0]
lea ecx, [esi - 0xffff]
cmovbe ebp, ecx
mov dword [esp + 0x3c], ebp
mov ecx, dword [eax + 0x40008]
mov eax, ecx
sub eax, ebx
mov dword [esp + 0x54], ecx
mov ebx, dword [esp + 0x4c]
add eax, edi
mov dword [esp + 0x7c], eax
mov eax, edx
sub eax, dword [esp + 0x40]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x48], eax
mov eax, dword [edx]
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x30], eax
xor eax, eax
mov dword [esp + 0x70], eax
mov esi, dword [edx + 0x40014]
cmp esi, ebx
jae 0x10188311
mov edi, esi
mov ebp, edx
sub edi, dword [esp + 0x10]
add edi, dword [esp + 0x34]
imul eax, dword [edi], 0x9e3779b1
lea edi, [edi + 1]
mov ecx, esi
shr eax, 0x11
lea edx, [eax*4]
mov eax, 0xffff
sub ecx, dword [edx + ebp]
cmp ecx, 0xffff
cmova ecx, eax
movzx eax, si
mov word [ebp + eax*2 + 0x20000], cx
mov dword [edx + ebp], esi
inc esi
cmp esi, ebx
jb 0x101882c5
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0x54]
mov ebp, dword [esp + 0x3c]
mov edx, dword [esp + 0xa0]
mov esi, dword [esp + 0x20]
mov dword [edx + 0x40014], ebx
imul eax, dword [esi], 0x9e3779b1
shr eax, 0x11
mov ebx, dword [edx + eax*4]
mov dword [esp + 0x1c], ebx
cmp ebx, ebp
jb 0x101888d6
mov eax, dword [esp + 0x78]
mov edx, ecx
sub edx, eax
mov dword [esp + 0x5c], edx
nop
mov edx, dword [esp + 0x48]
test edx, edx
jle 0x10188a93
dec edx
mov ebp, ebx
mov dword [esp + 0x48], edx
cmp ebx, edi
jb 0x1018848b
mov esi, dword [esp + 0x40]
sub ebp, edi
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x34]
add ebp, edx
mov ecx, ebp
sub ecx, dword [esp + 0x64]
mov ax, word [esi + eax - 1]
mov esi, dword [esp + 0x28]
cmp ax, word [ecx + esi - 1]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
jne 0x1018863e
cmp dword [ebp], ecx
jne 0x1018863e
xor edi, edi
cmp dword [esp + 0x64], edi
je 0x101883d1
mov eax, edx
mov edx, dword [esp + 0x40]
sub eax, ebp
sub edx, esi
cmp edx, eax
cmovle edx, eax
test edx, edx
jns 0x101883d1
lea ecx, [esi - 1]
mov esi, ebp
sub esi, dword [esp + 0x20]
nop word [eax + eax]
mov al, byte [ecx]
cmp al, byte [esi + ecx]
jne 0x101883cd
dec edi
dec ecx
cmp edi, edx
jg 0x101883c0
mov esi, dword [esp + 0x20]
lea ecx, [esi + 4]
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
lea edx, [ebp + 4]
add esi, 0xfffffffd
mov ebx, ecx
cmp ecx, esi
jae 0x10188414
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x10188477
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x10188414
nop dword [eax + eax]
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x1018847f
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x10188400
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
lea eax, [esi - 1]
cmp ecx, eax
jae 0x10188430
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10188430
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x1018843b
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x1018843b
inc ecx
mov eax, ecx
sub eax, ebx
mov esi, dword [esp + 0x20]
sub eax, edi
mov ebx, dword [esp + 0x1c]
add eax, 4
mov ecx, dword [esp + 0x30]
cmp eax, dword [esp + 0x28]
jle 0x1018846e
mov dword [esp + 0x28], eax
lea eax, [edi + ebp]
mov dword [esp + 0x80], eax
lea eax, [edi + esi]
mov dword [esp + 0x84], eax
mov edi, dword [esp + 0x10]
jmp 0x1018863e
bsf eax, eax
shr eax, 3
jmp 0x1018843f
bsf eax, eax
shr eax, 3
sub eax, ebx
add eax, ecx
jmp 0x1018843f
sub ebp, eax
lea eax, [edi - 4]
add ebp, ecx
mov ecx, dword [esp + 0x30]
cmp ebx, eax
ja 0x1018863e
cmp dword [ebp], ecx
jne 0x1018863e
mov eax, dword [esp + 0x2c]
lea ecx, [esi + 4]
sub edi, ebx
lea edx, [ebp + 4]
add edi, esi
add eax, 0xfffffffb
cmp edi, eax
mov ebx, ecx
cmova edi, eax
lea esi, [edi - 3]
cmp ecx, esi
jae 0x101884f4
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x10188606
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x101884f4
nop word [eax + eax]
mov eax, dword [edx]
xor eax, dword [ecx]
jne 0x10188611
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x101884e0
lea eax, [edi - 1]
cmp ecx, eax
jae 0x10188509
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10188509
add ecx, 2
add edx, 2
cmp ecx, edi
jae 0x10188514
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x10188514
inc ecx
mov eax, ecx
sub eax, ebx
mov ecx, dword [esp + 0x20]
lea ebx, [eax + 4]
add ecx, ebx
cmp ecx, edi
jne 0x10188594
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
cmp edi, esi
jae 0x10188594
mov eax, dword [esp + 0x34]
add esi, 0xfffffffd
mov edx, eax
mov edi, ecx
cmp ecx, esi
jae 0x10188567
mov eax, dword [eax]
xor eax, dword [ecx]
jne 0x10188620
add ecx, 4
add edx, 4
cmp ecx, esi
jae 0x10188567
mov eax, dword [ecx]
xor eax, dword [edx]
jne 0x1018862b
add ecx, 4
add edx, 4
cmp ecx, esi
jb 0x10188553
mov esi, dword [esp + 0x2c]
add esi, 0xfffffffb
lea eax, [esi - 1]
cmp ecx, eax
jae 0x10188583
mov ax, word [edx]
cmp ax, word [ecx]
jne 0x10188583
add ecx, 2
add edx, 2
cmp ecx, esi
jae 0x1018858e
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x1018858e
inc ecx
mov eax, ecx
sub eax, edi
add ebx, eax
xor edx, edx
cmp dword [esp + 0x64], edx
je 0x101885cd
mov eax, dword [esp + 0x54]
mov esi, dword [esp + 0x40]
sub eax, ebp
mov edi, dword [esp + 0x20]
sub esi, edi
cmp esi, eax
cmovle esi, eax
test esi, esi
jns 0x101885cd
lea ecx, [edi - 1]
sub ebp, edi
nop word [eax + eax]
mov al, byte [ecx]
cmp al, byte [ecx + ebp]
jne 0x101885cd
dec edx
dec ecx
cmp edx, esi
jg 0x101885c0
mov edi, dword [esp + 0x10]
sub ebx, edx
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x30]
cmp ebx, dword [esp + 0x28]
jle 0x1018863a
mov eax, edx
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x1c]
sub eax, edi
add eax, ebx
add eax, dword [esp + 0x34]
mov dword [esp + 0x80], eax
lea eax, [edx + esi]
mov dword [esp + 0x84], eax
jmp 0x1018863e
bsf eax, eax
shr eax, 3
jmp 0x10188518
bsf eax, eax
shr eax, 3
sub eax, ebx
add eax, ecx
jmp 0x10188518
bsf eax, eax
shr eax, 3
jmp 0x10188592
bsf eax, eax
shr eax, 3
sub eax, edi
add eax, ecx
jmp 0x10188592
mov ebx, dword [esp + 0x1c]
cmp dword [esp + 0x88], 0
je 0x101886c9
mov edx, dword [esp + 0xa0]
movzx eax, bx
cmp word [edx + eax*2 + 0x20000], 1
jne 0x101886c9
mov eax, dword [esp + 0x58]
lea ebp, [ebx - 1]
test eax, eax
jne 0x10188702
mov eax, ecx
xor ebx, ebx
shr eax, 0x18
mov edx, ecx
cmp cl, al
movzx eax, cx
sete bl
shr edx, 0x10
xor ecx, ecx
cmp eax, edx
sete cl
test ecx, ebx
je 0x101886bd
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
add eax, 0xfffffffb
push ebx
push eax
lea eax, [esi + 4]
mov dword [esp + 0x60], 2
push eax
call fcn.1018e0c0
mov ebx, dword [esp + 0x28]
add esp, 0xc
add eax, 4
mov dword [esp + 0x70], eax
jmp 0x10188707
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x58], 1
mov ecx, dword [esp + 0xa0]
movzx eax, bx
movzx eax, word [ecx + eax*2 + 0x20000]
sub ebx, eax
mov dword [esp + 0x1c], ebx
mov edi, dword [esp + 0x10]
mov ebp, dword [esp + 0x3c]
mov esi, dword [esp + 0x20]
mov ecx, dword [esp + 0x54]
mov eax, dword [esp + 0x78]
cmp ebx, ebp
jae 0x10188340
jmp 0x101888d6
cmp eax, 2
jne 0x101886c9
cmp ebp, dword [esp + 0x3c]
jb 0x101886c9
mov eax, edi
sub eax, ebp
dec eax
cmp eax, 3
jb 0x101886c9
cmp ebp, edi
jae 0x10188721
mov eax, dword [esp + 0x5c]
jmp 0x10188727
mov eax, dword [esp + 0x34]
sub eax, edi
lea edi, [eax + ebp]
mov eax, dword [esp + 0x30]
cmp dword [edi], eax
jne 0x101886c9
mov ebx, dword [esp + 0x2c]
add ebx, 0xfffffffb
cmp ebp, dword [esp + 0x10]
push eax
cmovb ebx, dword [esp + 0x80]
lea eax, [edi + 4]
push ebx
push eax
call fcn.1018e0c0
mov ecx, dword [esp + 0x1c]
add esp, 0xc
lea esi, [eax + 4]
cmp ebp, ecx
jae 0x101887a9
lea eax, [esi + edi]
cmp eax, ebx
jne 0x101887a9
mov ebx, dword [esp + 0x30]
mov ecx, esi
and ecx, 3
mov eax, ebx
shl ecx, 3
test ecx, ecx
je 0x10188779
rol eax, cl
push eax
mov eax, dword [esp + 0x30]
add eax, 0xfffffffb
push eax
push dword [esp + 0x3c]
call fcn.1018e0c0
add esi, eax
mov eax, dword [esp + 0x40]
cmp ebp, dword [esp + 0x1c]
push ebx
cmovb eax, dword [esp + 0x64]
push eax
push edi
call fcn.1018e190
add esp, 0x18
mov ebx, eax
jmp 0x10188805
mov eax, dword [esp + 0x34]
cmp ebp, ecx
mov ebx, dword [esp + 0x30]
cmovb eax, dword [esp + 0x54]
push ebx
push eax
push edi
call fcn.1018e190
mov ecx, dword [esp + 0x1c]
add esp, 0xc
mov ebx, eax
cmp ebp, ecx
jb 0x10188809
sub edi, ebx
cmp edi, dword [esp + 0x34]
jne 0x10188809
cmp dword [esp + 0x78], ecx
jae 0x10188809
mov eax, dword [esp + 0x30]
mov ecx, ebx
neg ecx
and ecx, 3
shl ecx, 3
test ecx, ecx
je 0x101887ef
rol eax, cl
push eax
push dword [esp + 0x58]
push dword [esp + 0x84]
call fcn.1018e190
add esp, 0xc
add ebx, eax
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x70]
mov eax, ebp
sub eax, ebx
mov edx, esi
mov ebx, dword [esp + 0x3c]
cmp eax, ebx
cmova ebx, eax
sub edx, ebx
mov dword [esp + 0x1c], ebx
add edx, ebp
cmp edx, edi
jb 0x1018884a
cmp esi, edi
ja 0x1018884a
sub esi, edi
mov edi, dword [esp + 0x10]
add esi, ebp
mov eax, edi
sub eax, esi
mov ebx, edi
dec eax
cmp eax, 3
cmovae ebx, esi
mov dword [esp + 0x1c], ebx
jmp 0x101886e5
sub ecx, ebx
lea eax, [ecx - 1]
cmp eax, 3
jae 0x10188863
mov edi, dword [esp + 0x10]
mov ebx, edi
mov dword [esp + 0x1c], ebx
jmp 0x101886e5
cmp dword [esp + 0x64], 0
jne 0x101886e1
cmp edx, edi
mov eax, edi
cmovb eax, edx
cmp dword [esp + 0x28], eax
jae 0x101888ad
mov edx, dword [esp + 0x34]
sub ecx, edx
mov esi, dword [esp + 0x20]
add ecx, esi
cmp ecx, 0xffff
ja 0x101888d2
mov edi, dword [esp + 0x10]
mov dword [esp + 0x28], eax
mov eax, ebx
sub eax, edi
mov dword [esp + 0x84], esi
add eax, edx
mov dword [esp + 0x80], eax
jmp 0x101888b1
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 0xa0]
movzx eax, bx
movzx eax, word [ecx + eax*2 + 0x20000]
cmp eax, ebx
ja 0x101888d2
sub ebx, eax
mov dword [esp + 0x1c], ebx
jmp 0x101886e5
mov ebp, dword [esp + 0x3c]
mov edi, dword [esp + 0x48]
test edi, edi
jle 0x10188a93
mov eax, dword [esp + 0x4c]
sub eax, ebp
cmp eax, 0xffff
jae 0x10188a93
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x68]
imul eax, dword [eax], 0x9e3779b1
mov ebx, dword [ecx + 0x40004]
mov ebp, dword [ecx + 0x40000]
mov esi, dword [ecx + 0x4000c]
sub ebp, ebx
add ebp, esi
mov dword [esp + 0x7c], esi
shr eax, 0x11
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x70], ebp
mov ecx, dword [ecx + eax*4]
mov edx, ecx
mov eax, dword [esp + 0x4c]
sub edx, ebp
add edx, dword [esp + 0x3c]
sub eax, edx
mov dword [esp + 0x78], ecx
mov dword [esp + 0x58], edx
cmp eax, 0xffff
ja 0x10188a93
nop word [eax + eax]
mov eax, edi
dec edi
mov dword [esp + 0x48], edi
test eax, eax
je 0x10188a93
mov eax, ecx
sub eax, esi
add ebx, eax
mov eax, dword [esp + 0x30]
cmp dword [ebx], eax
jne 0x10188a63
mov eax, dword [esp + 0x20]
lea edx, [ebx + 4]
mov edi, ebp
sub edi, ecx
mov ecx, dword [esp + 0x2c]
add edi, eax
add ecx, 0xfffffffb
cmp edi, ecx
cmova edi, ecx
add eax, 4
mov ebp, eax
lea esi, [edi - 3]
cmp eax, esi
jae 0x101889c4
mov ecx, dword [edx]
xor ecx, dword [eax]
jne 0x10188ada
add eax, 4
add edx, 4
cmp eax, esi
jae 0x101889c4
nop word [eax + eax]
mov ecx, dword [edx]
xor ecx, dword [eax]
jne 0x10188ae5
add eax, 4
add edx, 4
cmp eax, esi
jb 0x101889b0
lea ecx, [edi - 1]
cmp eax, ecx
jae 0x101889d9
mov cx, word [edx]
cmp cx, word [eax]
jne 0x101889d9
add eax, 2
add edx, 2
cmp eax, edi
jae 0x101889e4
mov cl, byte [edx]
cmp cl, byte [eax]
jne 0x101889e4
inc eax
mov ecx, eax
sub ecx, ebp
mov ebp, dword [esp + 0x20]
lea edi, [ecx + 4]
xor edx, edx
cmp dword [esp + 0x64], edx
je 0x10188a24
mov eax, dword [esp + 0x68]
mov esi, dword [esp + 0x40]
sub esi, ebp
mov eax, dword [eax + 0x40004]
sub eax, ebx
cmp esi, eax
cmovle esi, eax
test esi, esi
jns 0x10188a24
lea ecx, [ebp - 1]
sub ebx, ebp
mov al, byte [ecx]
cmp al, byte [ebx + ecx]
jne 0x10188a24
dec edx
dec ecx
cmp edx, esi
jg 0x10188a17
mov ecx, dword [esp + 0x78]
sub edi, edx
mov esi, dword [esp + 0x7c]
cmp edi, dword [esp + 0x28]
jle 0x10188a57
mov eax, edx
mov dword [esp + 0x28], edi
sub eax, dword [esp + 0x10]
add eax, dword [esp + 0x58]
add eax, dword [esp + 0x34]
mov dword [esp + 0x80], eax
lea eax, [edx + ebp]
mov dword [esp + 0x84], eax
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x70]
mov edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x68]
movzx eax, cx
movzx eax, word [ebx + eax*2 + 0x20000]
mov ebx, dword [esp + 0x5c]
sub ecx, eax
sub edx, eax
mov dword [esp + 0x78], ecx
mov eax, dword [esp + 0x4c]
sub eax, edx
mov dword [esp + 0x58], edx
cmp eax, 0xffff
jbe 0x10188950
mov edx, dword [esp + 0x28]
mov edi, dword [esp + 0x44]
mov esi, dword [esp + 0x18]
cmp edx, edi
je 0x10188ee9
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x84]
lea ecx, [esi + ebp]
lea eax, [ecx + 3]
cmp ebx, eax
jae 0x10188af4
cmp ebx, ecx
jae 0x10188cf3
mov ecx, dword [esp + 0x80]
mov edi, edx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x50], ecx
jmp 0x101881ac
bsf ecx, ecx
shr ecx, 3
jmp 0x101889e8
bsf ecx, ecx
shr ecx, 3
sub ecx, ebp
add ecx, eax
jmp 0x101889e8
mov edx, dword [esp + 0x40]
cmp edx, ecx
jae 0x10188b4d
mov eax, edx
sub eax, esi
cmp eax, 0x12
jge 0x10188b49
cmp ebp, 0x12
lea ecx, [edx - 4]
mov eax, 0x12
cmovg ebp, eax
add ecx, edi
mov dword [esp + 0x24], ebp
lea eax, [esi + ebp]
cmp eax, ecx
jbe 0x10188b2d
mov ebp, edi
sub ebp, esi
add ebp, 0xfffffffc
add ebp, edx
mov dword [esp + 0x24], ebp
mov eax, ebp
sub eax, edx
add eax, esi
test eax, eax
jle 0x10188b4d
add dword [esp + 0x50], eax
add edx, eax
sub edi, eax
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edi
jmp 0x10188b4d
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
mov ecx, esi
sub ecx, dword [esp + 0x38]
mov edi, eax
mov ebx, eax
mov dword [esp + 0x1c], edi
mov ebp, eax
mov dword [esp + 0x5c], ebx
inc eax
mov dword [esp + 0x70], ecx
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x14], eax
je 0x10188b9b
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x14]
shr edx, 7
add eax, 8
add edx, ecx
add eax, edx
cmp eax, dword [esp + 0x74]
ja 0x101893e9
mov eax, dword [esp + 0x14]
cmp ecx, 0xf
jb 0x10188bf0
lea ebx, [ecx - 0xf]
mov byte [ebp], 0xf0
cmp ebx, 0xff
jb 0x10188be3
mov eax, 0x80808081
mul ebx
mov eax, dword [esp + 0x14]
mov esi, edx
shr esi, 7
push esi
push 0xff
push eax
call fcn.1010f560
mov eax, dword [esp + 0x20]
add esp, 0xc
add eax, esi
sub ebx, 0xff
sub esi, 1
jne 0x10188bd4
mov ecx, dword [esp + 0x70]
mov byte [eax], bl
inc eax
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x14], eax
jmp 0x10188bfc
mov al, cl
shl al, 4
mov byte [ebp], al
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x38]
lea edi, [ecx + eax]
mov edx, eax
sub esi, eax
mov eax, dword [edx + esi]
mov ecx, dword [edx + esi + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
add edx, 8
cmp edx, edi
jb 0x10188c07
mov esi, dword [esp + 0x14]
add esi, dword [esp + 0x70]
mov edi, dword [esp + 0x18]
mov eax, edi
sub eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x24]
mov word [esi], ax
add ecx, 0xfffffffc
add esi, 2
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x14], esi
je 0x10188c60
mov eax, 0x80808081
mul ecx
lea eax, [esi + 6]
shr edx, 7
add eax, edx
cmp eax, dword [esp + 0x74]
ja 0x101893e1
mov al, byte [ebx]
cmp ecx, 0xf
jb 0x10188caf
add al, 0xf
sub ecx, 0xf
mov byte [ebp], al
cmp ecx, 0x1fe
jb 0x10188c94
mov eax, 0x80808081
mul ecx
shr edx, 8
mov word [esi], 0xffff
sub ecx, 0x1fe
add esi, 2
sub edx, 1
jne 0x10188c81
cmp ecx, 0xff
jb 0x10188ca6
sub ecx, 0xff
mov byte [esi], 0xff
inc esi
mov byte [esi], cl
inc esi
mov dword [esp + 0x14], esi
jmp 0x10188cb4
add al, cl
mov byte [ebp], al
add edi, dword [esp + 0x24]
mov esi, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
mov ebp, dword [esp + 0x44]
mov ebx, dword [esp + 0x84]
mov eax, dword [esp + 0x80]
mov dword [esp + 0x38], edi
mov edi, dword [esp + 0x28]
mov dword [esp + 0x18], esi
mov dword [esp + 0x60], ecx
mov dword [esp + 0x24], ebp
mov dword [esp + 0x40], ebx
mov dword [esp + 0x50], eax
jmp 0x101881ac
mov esi, dword [esp + 0x40]
cmp esi, ecx
jae 0x10188d2b
mov eax, ebp
sub eax, esi
add eax, dword [esp + 0x18]
add dword [esp + 0x50], eax
sub edi, eax
add esi, eax
mov dword [esp + 0x44], edi
mov dword [esp + 0x40], esi
cmp edi, 4
jge 0x10188d2b
mov eax, dword [esp + 0x80]
mov dword [esp + 0x40], ebx
mov dword [esp + 0x50], eax
mov dword [esp + 0x44], edx
mov eax, dword [esp + 0x14]
mov edi, eax
mov esi, dword [esp + 0x18]
mov ebx, eax
mov ecx, esi
mov dword [esp + 0x1c], edi
sub ecx, dword [esp + 0x38]
mov ebp, eax
inc eax
mov dword [esp + 0x5c], ebx
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x14], eax
mov dword [esp + 0x70], ecx
je 0x10188d7d
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x14]
shr edx, 7
add eax, 8
add edx, ecx
add eax, edx
cmp eax, dword [esp + 0x74]
ja 0x101893e9
mov eax, dword [esp + 0x14]
cmp ecx, 0xf
jb 0x10188ddc
lea ebx, [ecx - 0xf]
mov byte [ebp], 0xf0
cmp ebx, 0xff
jb 0x10188dcf
mov eax, 0x80808081
mul ebx
mov eax, dword [esp + 0x14]
mov esi, edx
shr esi, 7
push esi
push 0xff
push eax
call fcn.1010f560
mov eax, dword [esp + 0x20]
add esp, 0xc
add eax, esi
nop word [eax + eax]
sub ebx, 0xff
sub esi, 1
jne 0x10188dc0
mov ecx, dword [esp + 0x70]
mov byte [eax], bl
inc eax
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x14], eax
jmp 0x10188de8
mov al, cl
shl al, 4
mov byte [ebp], al
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x38]
lea edi, [ecx + eax]
mov edx, eax
sub esi, eax
mov eax, dword [edx + esi]
mov ecx, dword [edx + esi + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
add edx, 8
cmp edx, edi
jb 0x10188df3
mov esi, dword [esp + 0x14]
add esi, dword [esp + 0x70]
mov edi, dword [esp + 0x18]
mov eax, edi
sub eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x24]
mov word [esi], ax
add ecx, 0xfffffffc
add esi, 2
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x14], esi
je 0x10188e4c
mov eax, 0x80808081
mul ecx
lea eax, [esi + 6]
shr edx, 7
add eax, edx
cmp eax, dword [esp + 0x74]
ja 0x101893e1
mov al, byte [ebx]
cmp ecx, 0xf
jb 0x10188e9e
add al, 0xf
sub ecx, 0xf
mov byte [ebp], al
cmp ecx, 0x1fe
jb 0x10188e83
mov eax, 0x80808081
mul ecx
shr edx, 8
nop dword [eax]
mov word [esi], 0xffff
sub ecx, 0x1fe
add esi, 2
sub edx, 1
jne 0x10188e70
cmp ecx, 0xff
jb 0x10188e95
sub ecx, 0xff
mov byte [esi], 0xff
inc esi
mov byte [esi], cl
inc esi
mov dword [esp + 0x14], esi
jmp 0x10188ea3
add cl, al
mov byte [ebp], cl
mov eax, dword [esp + 0x80]
add edi, dword [esp + 0x24]
mov esi, dword [esp + 0x84]
mov ecx, dword [esp + 0x28]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x50]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x44]
mov dword [esp + 0x38], edi
mov dword [esp + 0x18], esi
mov dword [esp + 0x24], ecx
mov dword [esp + 0x6c], eax
jmp 0x101878c0
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x24]
add eax, esi
cmp ebx, eax
jae 0x10188eff
mov eax, ebx
sub eax, esi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
mov ecx, esi
sub ecx, dword [esp + 0x38]
mov edi, eax
mov ebx, eax
mov dword [esp + 0x1c], edi
mov ebp, eax
mov dword [esp + 0x5c], ebx
inc eax
mov dword [esp + 0x6c], ecx
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x14], eax
je 0x10188f4d
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x14]
shr edx, 7
add eax, 8
add edx, ecx
add eax, edx
cmp eax, dword [esp + 0x74]
ja 0x101893e9
mov eax, dword [esp + 0x14]
cmp ecx, 0xf
jb 0x10188fac
lea ebx, [ecx - 0xf]
mov byte [ebp], 0xf0
cmp ebx, 0xff
jb 0x10188f9f
mov eax, 0x80808081
mul ebx
mov eax, dword [esp + 0x14]
mov esi, edx
shr esi, 7
push esi
push 0xff
push eax
call fcn.1010f560
mov eax, dword [esp + 0x20]
add esp, 0xc
add eax, esi
nop word [eax + eax]
sub ebx, 0xff
sub esi, 1
jne 0x10188f90
mov ecx, dword [esp + 0x6c]
mov byte [eax], bl
inc eax
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x14], eax
jmp 0x10188fb8
mov al, cl
shl al, 4
mov byte [ebp], al
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x38]
lea edi, [ecx + eax]
mov edx, eax
sub esi, eax
mov eax, dword [edx + esi]
mov ecx, dword [edx + esi + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
add edx, 8
cmp edx, edi
jb 0x10188fc3
mov esi, dword [esp + 0x14]
add esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x24]
mov word [esi], ax
add ecx, 0xfffffffc
add esi, 2
cmp dword [esp + 0xb8], 0
je 0x10189016
mov eax, 0x80808081
mul ecx
lea eax, [esi + 6]
shr edx, 7
add eax, edx
cmp eax, dword [esp + 0x74]
ja 0x101893e1
mov al, byte [ebx]
cmp ecx, 0xf
jb 0x1018906a
add al, 0xf
sub ecx, 0xf
mov byte [ebp], al
cmp ecx, 0x1fe
jb 0x10189053
mov eax, 0x80808081
mul ecx
shr edx, 8
nop word [eax + eax]
mov word [esi], 0xffff
sub ecx, 0x1fe
add esi, 2
sub edx, 1
jne 0x10189040
cmp ecx, 0xff
jb 0x10189065
sub ecx, 0xff
mov byte [esi], 0xff
inc esi
mov byte [esi], cl
inc esi
jmp 0x1018906f
add al, cl
mov byte [ebp], al
mov ebx, dword [esp + 0x40]
mov edi, esi
mov esi, dword [esp + 0x18]
mov ecx, ebx
add esi, dword [esp + 0x24]
sub ecx, esi
mov dword [esp + 0x1c], edi
cmp dword [esp + 0xb8], 0
lea ebp, [edi + 1]
mov dword [esp + 0x38], esi
mov dword [esp + 0x18], ebx
mov dword [esp + 0x6c], ecx
je 0x101890b9
mov eax, 0x80808081
mul ecx
lea eax, [ecx + 8]
shr edx, 7
add eax, edx
add eax, ebp
cmp eax, dword [esp + 0x74]
ja 0x101893b5
cmp ecx, 0xf
jb 0x1018910e
lea ebx, [ecx - 0xf]
mov byte [edi], 0xf0
cmp ebx, 0xff
jb 0x10189104
mov eax, 0x80808081
mul ebx
mov esi, edx
shr esi, 7
push esi
push 0xff
push ebp
call fcn.1010f560
mov eax, dword [esp + 0x44]
add esp, 0xc
add ebp, esi
mov dword [esp + 0x38], eax
sub ebx, 0xff
sub esi, 1
jne 0x101890f1
mov ecx, dword [esp + 0x6c]
mov esi, dword [esp + 0x38]
mov byte [ebp], bl
inc ebp
mov ebx, dword [esp + 0x40]
jmp 0x10189119
mov al, cl
mov dword [esp + 0x38], esi
shl al, 4
mov byte [edi], al
mov edx, ebp
lea edi, [ecx + ebp]
sub esi, ebp
mov eax, dword [edx + esi]
mov ecx, dword [edx + esi + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
add edx, 8
cmp edx, edi
jb 0x10189120
add ebp, dword [esp + 0x6c]
mov eax, ebx
sub eax, dword [esp + 0x50]
mov esi, dword [esp + 0x44]
mov word [ebp], ax
add ebp, 2
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x14], ebp
lea ecx, [esi - 4]
je 0x10189172
mov eax, 0x80808081
mul ecx
shr edx, 7
lea eax, [edx + 6]
add eax, ebp
cmp eax, dword [esp + 0x74]
ja 0x101893cd
mov edx, dword [esp + 0x1c]
mov al, byte [edx]
cmp ecx, 0xf
jb 0x101891d6
add al, 0xf
sub ecx, 0xf
mov byte [edx], al
cmp ecx, 0x1fe
jb 0x101891b4
mov eax, 0x80808081
mul ecx
shr edx, 8
nop word [eax + eax]
mov word [ebp], 0xffff
sub ecx, 0x1fe
add ebp, 2
sub edx, 1
jne 0x101891a0
cmp ecx, 0xff
jb 0x101891c7
sub ecx, 0xff
mov byte [ebp], 0xff
inc ebp
mov byte [ebp], cl
inc ebp
mov dword [esp + 0x14], ebp
add ebx, esi
jmp 0x1018935c
add cl, al
add ebx, esi
mov byte [edx], cl
jmp 0x1018935c
mov eax, dword [esp + 0x14]
mov ecx, esi
sub ecx, dword [esp + 0x38]
mov edi, eax
mov ebx, eax
mov dword [esp + 0x1c], edi
mov ebp, eax
mov dword [esp + 0x5c], ebx
inc eax
mov dword [esp + 0x6c], ecx
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x14], eax
je 0x1018922f
mov eax, 0x80808081
mul ecx
mov eax, dword [esp + 0x14]
shr edx, 7
add eax, 8
add edx, ecx
add eax, edx
cmp eax, dword [esp + 0x74]
ja 0x101893e9
mov eax, dword [esp + 0x14]
cmp ecx, 0xf
jb 0x1018928c
lea ebx, [ecx - 0xf]
mov byte [ebp], 0xf0
cmp ebx, 0xff
jb 0x1018927f
mov eax, 0x80808081
mul ebx
mov eax, dword [esp + 0x14]
mov esi, edx
shr esi, 7
push esi
push 0xff
push eax
call fcn.1010f560
mov eax, dword [esp + 0x20]
add esp, 0xc
add eax, esi
nop dword [eax + eax]
sub ebx, 0xff
sub esi, 1
jne 0x10189270
mov ecx, dword [esp + 0x6c]
mov byte [eax], bl
inc eax
mov ebx, dword [esp + 0x5c]
mov dword [esp + 0x14], eax
jmp 0x10189298
mov al, cl
shl al, 4
mov byte [ebp], al
mov eax, dword [esp + 0x14]
mov esi, dword [esp + 0x38]
lea edi, [ecx + eax]
mov edx, eax
sub esi, eax
mov eax, dword [esi + edx]
mov ecx, dword [esi + edx + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
add edx, 8
cmp edx, edi
jb 0x101892a3
mov esi, dword [esp + 0x14]
add esi, dword [esp + 0x6c]
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x60]
mov edi, dword [esp + 0x24]
mov word [esi], ax
add esi, 2
cmp dword [esp + 0xb8], 0
mov dword [esp + 0x14], esi
lea ecx, [edi - 4]
je 0x101892fa
mov eax, 0x80808081
mul ecx
lea eax, [esi + 6]
shr edx, 7
add eax, edx
cmp eax, dword [esp + 0x74]
ja 0x101893e1
mov al, byte [ebx]
cmp ecx, 0xf
jb 0x10189351
add al, 0xf
sub ecx, 0xf
mov byte [ebp], al
mov ebp, dword [esp + 0x14]
cmp ecx, 0x1fe
jb 0x10189334
mov eax, 0x80808081
mul ecx
shr edx, 8
nop
mov word [ebp], 0xffff
sub ecx, 0x1fe
add ebp, 2
sub edx, 1
jne 0x10189320
cmp ecx, 0xff
jb 0x10189347
sub ecx, 0xff
mov byte [ebp], 0xff
inc ebp
mov byte [ebp], cl
inc ebp
mov dword [esp + 0x14], ebp
jmp 0x10189356
add cl, al
mov byte [ebp], cl
mov ebx, dword [esp + 0x18]
add ebx, edi
mov ebp, ebx
mov dword [esp + 0x38], ebp
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff4
mov dword [esp + 0x18], ebx
cmp ebx, eax
jbe 0x10187150
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x74]
mov ebx, dword [esp + 0x2c]
mov eax, 0x80808081
sub ebx, ebp
mov dword [esp + 0x2c], ebx
lea ecx, [ebx + 0xf0]
mul ecx
mov ecx, dword [esp + 0xb8]
shr edx, 7
add edx, ebx
cmp ecx, 2
jne 0x10189594
mov esi, dword [esp + 0x14]
add edi, 5
jmp 0x10189598
mov eax, dword [esp + 0x50]
mov dword [esp + 0x38], esi
mov esi, dword [esp + 0x44]
mov ebp, esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x60], eax
jmp 0x101893ed
mov eax, dword [esp + 0x50]
mov ebp, esi
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x60], eax
jmp 0x101893ed
mov esi, dword [esp + 0x18]
mov edi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x24]
cmp dword [esp + 0xb8], 2
jne 0x1018958d
mov ebx, esi
mov dword [esp + 0x14], edi
sub ebx, dword [esp + 0x38]
mov eax, 0x80808081
mov esi, dword [esp + 0x74]
mov dword [esp + 0x5c], ebx
lea ecx, [ebx + 0xf0]
mul ecx
lea ecx, [esi - 3]
shr edx, 7
inc edx
add edx, ebx
lea eax, [edx + edi]
cmp eax, ecx
ja 0x10189559
sub ecx, edx
sub ecx, edi
imul eax, ecx, 0xff
add eax, 0x12
cmp ebp, eax
cmova ebp, eax
mov eax, esi
sub eax, edx
mov dword [esp + 0x24], ebp
sub eax, edi
add eax, 2
add eax, ebp
cmp eax, 0xc
jl 0x10189559
lea ebp, [edi + 1]
cmp ebx, 0xf
jb 0x101894a5
add ebx, 0xfffffff1
mov byte [edi], 0xf0
cmp ebx, 0xff
jb 0x1018949b
mov eax, 0x80808081
mul ebx
mov esi, edx
shr esi, 7
push esi
push 0xff
push ebp
call fcn.1010f560
add esp, 0xc
add ebp, esi
nop dword [eax + eax]
sub ebx, 0xff
sub esi, 1
jne 0x10189490
mov byte [ebp], bl
inc ebp
mov ebx, dword [esp + 0x5c]
jmp 0x101894ac
mov al, bl
shl al, 4
mov byte [edi], al
mov edi, dword [esp + 0x38]
lea esi, [ebx + ebp]
mov edx, ebp
sub edi, ebp
mov eax, dword [edx + edi]
mov ecx, dword [edx + edi + 4]
mov dword [edx], eax
mov dword [edx + 4], ecx
add edx, 8
cmp edx, esi
jb 0x101894b7
mov edx, dword [esp + 0x18]
add ebp, ebx
mov ebx, dword [esp + 0x24]
mov eax, edx
sub eax, dword [esp + 0x60]
mov edi, dword [esp + 0x1c]
mov word [ebp], ax
add ebp, 2
lea ecx, [ebx - 4]
mov dword [esp + 0x14], ebp
mov al, byte [edi]
cmp ecx, 0xf
jb 0x1018954c
add al, 0xf
sub ecx, 0xf
mov byte [edi], al
cmp ecx, 0x1fe
jb 0x10189528
mov eax, 0x80808081
mul ecx
shr edx, 8
nop dword [eax]
mov word [ebp], 0xffff
sub ecx, 0x1fe
add ebp, 2
sub edx, 1
jne 0x10189510
mov edx, dword [esp + 0x18]
cmp ecx, 0xff
jb 0x1018953b
sub ecx, 0xff
mov byte [ebp], 0xff
inc ebp
mov byte [ebp], cl
inc ebp
mov dword [esp + 0x14], ebp
lea ebp, [ebx + edx]
mov dword [esp + 0x38], ebp
jmp 0x1018955d
add al, cl
lea ebp, [ebx + edx]
mov byte [edi], al
mov dword [esp + 0x38], ebp
jmp 0x1018955d
mov ebp, dword [esp + 0x38]
mov ebx, dword [esp + 0x2c]
mov eax, 0x80808081
mov edi, dword [esp + 0x74]
sub ebx, ebp
mov esi, dword [esp + 0x14]
mov dword [esp + 0x2c], ebx
lea ecx, [ebx + 0xf0]
mul ecx
mov ecx, dword [esp + 0xb8]
shr edx, 7
add edx, ebx
add edi, 5
jmp 0x10189598
xor ebx, ebx
jmp 0x1018966f
test ecx, ecx
je 0x101895ba
lea eax, [esi + 1]
add eax, edx
cmp eax, edi
jbe 0x101895ba
cmp ecx, 1
je 0x1018958d
mov ebx, edi
sub ebx, esi
dec ebx
lea eax, [ebx + 0xf1]
shr eax, 8
sub ebx, eax
mov dword [esp + 0x2c], ebx
add ebp, ebx
lea edi, [esi + 1]
cmp ebx, 0xf
jb 0x10189604
add ebx, 0xfffffff1
mov byte [esi], 0xf0
cmp ebx, 0xff
jb 0x101895fb
mov eax, 0x80808081
mul ebx
mov esi, edx
shr esi, 7
push esi
push 0xff
push edi
call fcn.1010f560
add esp, 0xc
add edi, esi
nop
sub ebx, 0xff
sub esi, 1
jne 0x101895f0
mov byte [edi], bl
inc edi
mov ebx, dword [esp + 0x2c]
jmp 0x1018960b
mov al, bl
shl al, 4
mov byte [esi], al
push ebx
push dword [esp + 0x3c]
push edi
call fcn.1010efe0
mov eax, dword [esp + 0xb8]
add esp, 0xc
sub ebp, dword [esp + 0xa4]
sub ebx, dword [esp + 0xa8]
add ebx, edi
mov dword [eax], ebp
jmp 0x1018966b
push eax
push 1
xor eax, eax
cmp ecx, 0xc
sete al
push eax
mov eax, dword [esp + 0xb8]
push ebp
push esi
push dword [esp + 0xa8]
push edx
push eax
push dword [esp + 0xc8]
push dword [esp + 0xc8]
push ebx
call fcn.1018b7d0
add esp, 0x2c
mov ebx, eax
test ebx, ebx
jg 0x1018967d
mov eax, dword [esp + 0xa0]
mov byte [eax + 0x4001b], 1
pop ebp
pop esi
pop edi
mov eax, ebx
pop ebx
add esp, 0x8c
ret