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

Disassembly:
sub esp, 0x44
push ebx
push ebp
mov ebp, dword [esp + 0x50]
push esi
push edi
imul edi, dword [esp + 0x6c], 0x2c
mov eax, dword [ebp + 0xa88]
lea ebx, [edi + ebp]
mov ecx, dword [ebx + 0x10dfc]
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0xa8c]
mov dword [esp + 0x48], eax
mov al, byte [ebx + 0x10dec]
mov byte [esp + 0x12], al
test al, al
je 0x10186797
dec ecx
cmp byte [ebx + 0x10ded], 0
je 0x10186760
imul eax, dword [ebx + 0x10df0], 0x2c
cmp dword [ebx + 0x10df4], 4
mov eax, dword [eax + ebp + 0x10de8]
jae 0x1018674e
cmp eax, 7
mov edx, 0xb
mov eax, 8
cmovl edx, eax
jmp 0x1018676a
cmp eax, 7
mov edx, 0xa
mov eax, 7
cmovl edx, eax
jmp 0x1018676a
imul eax, ecx, 0x2c
mov edx, dword [eax + ebp + 0x10de8]
cmp edx, 3
jg 0x1018677a
mov eax, dword [esp + 0x6c]
xor edx, edx
imul edi, eax, 0x2c
jmp 0x101867a5
cmp edx, 9
jg 0x1018678b
mov eax, dword [esp + 0x6c]
sub edx, 3
imul edi, eax, 0x2c
jmp 0x101867a5
mov eax, dword [esp + 0x6c]
sub edx, 6
imul edi, eax, 0x2c
jmp 0x101867a5
imul eax, ecx, 0x2c
mov edx, dword [eax + ebp + 0x10de8]
mov eax, dword [esp + 0x6c]
dec eax
cmp ecx, eax
jne 0x1018680a
cmp dword [ebx + 0x10e00], 0
jne 0x101867cf
xor eax, eax
cmp edx, 7
mov edx, dword [esp + 0x5c]
setge al
lea eax, [eax*2 + 9]
mov dword [esp + 0x14], eax
jmp 0x1018691f
cmp edx, 3
jg 0x101867e5
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x14], 0
jmp 0x1018691f
cmp edx, 9
jg 0x101867fa
sub edx, 3
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x5c]
jmp 0x1018691f
sub edx, 6
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x5c]
jmp 0x1018691f
cmp byte [esp + 0x12], 0
je 0x1018684b
cmp byte [ebx + 0x10ded], 0
je 0x1018684b
mov ecx, dword [ebx + 0x10df0]
cmp edx, 7
mov esi, dword [ebx + 0x10df4]
mov edx, 8
mov eax, 0xb
cmovl eax, edx
mov dword [esp + 0x14], eax
lea edx, [ecx + 0x623]
cmp esi, 4
jae 0x101868f3
jmp 0x10186874
mov esi, dword [ebx + 0x10e00]
cmp esi, 4
jae 0x101868d9
cmp edx, 7
mov eax, 0xb
mov edx, 8
cmovl eax, edx
lea edx, [ecx + 0x623]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x5c]
imul edi, edx, 0xb
lea eax, [edi + esi]
mov eax, dword [ebp + eax*4]
mov dword [ecx], eax
mov ecx, 1
cmp esi, ecx
jb 0x101868ad
imul edx, edx, 0x2c
add edx, ebp
mov ebp, dword [esp + 0x5c]
mov eax, dword [edx]
lea edx, [edx + 4]
mov dword [ebp + ecx*4], eax
inc ecx
cmp ecx, esi
jbe 0x10186896
mov ebp, dword [esp + 0x58]
cmp ecx, 4
jae 0x101868ce
mov esi, dword [esp + 0x5c]
lea eax, [edi + ecx]
lea edx, [eax*4]
add edx, ebp
nop dword [eax]
mov eax, dword [edx]
lea edx, [edx + 4]
mov dword [esi + ecx*4], eax
inc ecx
cmp ecx, 4
jb 0x101868c0
imul edi, dword [esp + 0x6c], 0x2c
mov edx, dword [esp + 0x5c]
jmp 0x1018691f
cmp edx, 7
mov eax, 0xa
mov edx, 7
cmovl eax, edx
lea edx, [ecx + 0x623]
mov dword [esp + 0x14], eax
imul ecx, ecx, 0x2c
lea eax, [esi - 4]
mov esi, dword [esp + 0x5c]
mov dword [esi], eax
mov eax, dword [ecx + ebp + 0x10e04]
mov dword [esi + 4], eax
imul eax, edx, 0x2c
mov edx, esi
mov eax, dword [eax + ebp + 4]
mov dword [edx + 8], eax
mov eax, dword [ecx + ebp + 0x10e0c]
mov dword [edx + 0xc], eax
mov esi, dword [esp + 0x14]
mov dword [ebx + 0x10de8], esi
mov ebx, dword [esp + 0x6c]
lea eax, [ebx + 0x623]
imul ecx, eax, 0x2c
mov eax, dword [edx]
mov dword [ecx + ebp], eax
mov eax, dword [edx + 4]
imul ecx, ebx, 0x2c
mov dword [ecx + ebp + 0x10e08], eax
mov eax, dword [edx + 8]
mov dword [edi + ebp + 0x10e0c], eax
mov eax, dword [edx + 0xc]
mov dword [edi + ebp + 0x10e10], eax
mov eax, dword [esp + 0x60]
mov ebx, dword [edi + ebp + 0x10df8]
mov dword [esp + 0x34], ebx
mov cl, byte [eax]
sub eax, dword [edx]
mov byte [esp + 0x13], cl
mov dl, byte [eax - 1]
mov eax, dword [ebp + 0xa94]
and eax, dword [esp + 0x68]
mov dword [esp + 0x1c], eax
lea eax, [esi + 0x355]
shl eax, 4
add eax, dword [esp + 0x1c]
mov byte [esp + 0x12], dl
lea eax, [eax*2]
add eax, ebp
cmp esi, 7
mov dword [esp + 0x28], eax
movzx eax, cl
push eax
movzx eax, dl
push eax
setge al
movzx eax, al
push eax
mov eax, dword [esp + 0x6c]
movzx eax, byte [eax - 1]
push eax
push dword [esp + 0x78]
push ebp
call fcn.10185ff0
mov ecx, dword [esp + 0x40]
add eax, ebx
add esp, 0x18
xor dl, dl
movzx ecx, word [ecx]
shr ecx, 4
movzx ecx, byte [ecx + 0x104a0ba8]
add ecx, eax
mov eax, dword [edi + ebp + 0x10e24]
mov dword [esp + 0x30], ecx
mov dword [esp + 0x24], eax
cmp ecx, eax
jae 0x10186a23
mov eax, dword [esp + 0x6c]
mov dword [edi + ebp + 0x10e24], ecx
mov dword [edi + ebp + 0x10e28], eax
mov byte [edi + ebp + 0x10e18], dl
mov dl, 1
mov dword [edi + ebp + 0x10e2c], 0xffffffff
mov dword [esp + 0x24], ecx
imul ebx, eax, 0x2c
jmp 0x10186a25
mov ebx, edi
mov eax, dword [esp + 0x28]
mov dh, byte [esp + 0x13]
movzx eax, word [eax]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x104a0ba8]
movzx eax, word [ebp + esi*2 + 0x6c20]
add ecx, dword [esp + 0x34]
xor eax, 0x7f0
shr eax, 4
mov dword [esp + 0x4c], ecx
movzx eax, byte [eax + 0x104a0ba8]
add eax, ecx
mov dword [esp + 0x2c], eax
mov al, byte [esp + 0x12]
cmp al, dh
jne 0x10186aec
mov ecx, dword [esp + 0x6c]
cmp dword [edi + ebp + 0x10e28], ecx
jae 0x10186a87
cmp dword [edi + ebp + 0x10e2c], 0
je 0x10186aec
lea eax, [esi + 0x364]
shl eax, 4
add eax, dword [esp + 0x1c]
movzx eax, word [ebp + eax*2]
shr eax, 4
movzx ecx, byte [eax + 0x104a0ba8]
movzx eax, word [ebp + esi*2 + 0x6c38]
add ecx, dword [esp + 0x2c]
shr eax, 4
movzx eax, byte [eax + 0x104a0ba8]
add eax, ecx
cmp eax, dword [esp + 0x24]
ja 0x10186ae8
mov dword [edi + ebp + 0x10e24], eax
mov dl, 1
mov eax, dword [esp + 0x6c]
mov dword [edi + ebp + 0x10e28], eax
mov dword [ebx + ebp + 0x10e2c], 0
mov byte [ebx + ebp + 0x10e18], 0
mov al, byte [esp + 0x12]
mov ecx, dword [esp + 0x74]
cmp ecx, 2
jae 0x10186b01
mov eax, dword [esp + 0x64]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret
mov ebx, dword [esp + 0x70]
cmp ecx, ebx
mov edi, ebx
cmovb edi, ecx
mov dword [esp + 0x34], edi
test dl, dl
jne 0x10186cb5
cmp al, dh
je 0x10186cb5
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x60]
mov ecx, edx
sub ecx, dword [eax]
lea eax, [ebx + 1]
dec ecx
cmp dword [esp + 0x74], eax
cmovb eax, dword [esp + 0x74]
push eax
push 1
push ecx
push edx
call fcn.10187750
mov ebx, eax
add esp, 0x10
lea eax, [ebx - 1]
mov dword [esp + 0x28], eax
cmp eax, 2
jb 0x10186cb5
cmp esi, 3
jg 0x10186b79
mov ecx, 0x3550
mov dword [esp + 0x24], 0x3640
mov edx, 0x6c20
mov dword [esp + 0x20], 0x6c38
jmp 0x10186bc3
mov eax, esi
shl eax, 4
cmp esi, 9
jg 0x10186ba2
lea ecx, [eax + 0x3520]
add eax, 0x3610
mov dword [esp + 0x24], eax
lea edx, [esi*2 + 0x6c1a]
lea eax, [esi*2 + 0x6c32]
jmp 0x10186bbf
lea ecx, [eax + 0x34f0]
add eax, 0x35e0
mov dword [esp + 0x24], eax
lea edx, [esi*2 + 0x6c14]
lea eax, [esi*2 + 0x6c2c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
mov esi, dword [ebp + 0xa94]
inc eax
and esi, eax
add ebx, dword [esp + 0x6c]
lea eax, [ecx + esi]
movzx eax, word [ebp + eax*2]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x104a0ba8]
movzx eax, word [edx + ebp]
add ecx, dword [esp + 0x30]
xor eax, 0x7f0
mov edx, dword [esp + 0x64]
shr eax, 4
mov dword [esp + 0x18], edx
movzx eax, byte [eax + 0x104a0ba8]
add eax, ecx
mov dword [esp + 0x30], eax
cmp edx, ebx
jae 0x10186c3f
imul eax, edx, 0x2c
mov ecx, ebx
mov dword [esp + 0x18], ebx
add eax, 0x10df8
add eax, ebp
sub ecx, edx
nop word [eax + eax]
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x10186c30
mov eax, dword [esp + 0x24]
add eax, esi
imul ecx, ebx, 0x2c
movzx eax, word [ebp + eax*2]
xor eax, 0x7f0
add ecx, ebp
shr eax, 4
movzx edx, byte [eax + 0x104a0ba8]
mov eax, dword [esp + 0x20]
movzx eax, word [eax + ebp]
shr eax, 4
movzx eax, byte [eax + 0x104a0ba8]
add edx, eax
imul eax, esi, 0x110
add eax, dword [esp + 0x28]
add edx, dword [ebp + eax*4 + 0xbd48]
add edx, dword [esp + 0x30]
cmp edx, dword [ecx + 0x10df8]
jae 0x10186cbd
mov eax, dword [esp + 0x6c]
inc eax
mov dword [ecx + 0x10df8], edx
mov dword [ecx + 0x10dfc], eax
mov dword [ecx + 0x10e00], 0
mov word [ecx + 0x10dec], 1
jmp 0x10186cbd
mov edx, dword [esp + 0x64]
mov dword [esp + 0x18], edx
mov esi, dword [esp + 0x60]
xor ebx, ebx
mov dword [esp + 0x20], 2
mov dword [esp + 0x28], ebx
nop
mov eax, dword [esp + 0x5c]
mov edx, esi
sub edx, dword [eax + ebx*4]
mov ax, word [esi]
dec edx
mov dword [esp + 0x30], edx
cmp ax, word [edx]
jne 0x1018706d
mov ecx, 2
cmp edi, ecx
jbe 0x10186d25
lea eax, [esi + 2]
mov esi, edx
sub esi, dword [esp + 0x60]
nop dword [eax]
movups xmm1, xmmword [esi + eax]
movups xmm0, xmmword [eax]
pcmpeqb xmm1, xmm0
pmovmskb edx, xmm1
xor edx, 0xffff
jne 0x10186da2
add ecx, 0x10
add eax, 0x10
cmp ecx, edi
jb 0x10186d00
mov edx, edi
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x18]
add esi, edx
cmp edi, esi
jae 0x10186d5f
imul eax, edi, 0x2c
mov ecx, esi
mov dword [esp + 0x18], esi
add eax, 0x10df8
add eax, ebp
sub ecx, edi
nop word [eax + eax]
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x10186d50
mov edi, dword [esp + 0x14]
mov dword [esp + 0x24], edx
test ebx, ebx
jne 0x10186db3
lea eax, [edi + 0x364]
shl eax, 4
add eax, dword [esp + 0x1c]
movzx eax, word [ebp + eax*2]
xor eax, 0x7f0
shr eax, 4
movzx esi, byte [eax + 0x104a0ba8]
movzx eax, word [ebp + edi*2 + 0x6c38]
shr eax, 4
movzx eax, byte [eax + 0x104a0ba8]
add esi, eax
jmp 0x10186e21
bsf eax, edx
mov edx, edi
add ecx, eax
cmp ecx, edi
cmovb edx, ecx
jmp 0x10186d27
movzx eax, word [ebp + edi*2 + 0x6c38]
xor eax, 0x7f0
shr eax, 4
movzx esi, byte [eax + 0x104a0ba8]
cmp ebx, 1
jne 0x10186de5
movzx eax, word [ebp + edi*2 + 0x6c50]
shr eax, 4
movzx eax, byte [eax + 0x104a0ba8]
add esi, eax
jmp 0x10186e21
movzx ecx, word [ebp + edi*2 + 0x6c68]
mov eax, 2
sub eax, ebx
shr ecx, 4
shr eax, 4
and eax, 0x7f
xor ecx, eax
movzx eax, word [ebp + edi*2 + 0x6c50]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [ecx + 0x104a0ba8]
movzx eax, byte [eax + 0x104a0ba8]
add esi, eax
add esi, ecx
mov eax, dword [esp + 0x6c]
imul ecx, dword [esp + 0x1c], 0x110
add eax, edx
mov edi, dword [esp + 0x2c]
imul eax, eax, 0x2c
add edi, esi
lea esi, [ebp + 0xbd48]
mov dword [esp + 0x3c], edi
add eax, 0x10df8
add eax, ebp
mov ebp, dword [esp + 0x6c]
add ecx, edx
lea esi, [esi + ecx*4]
mov ecx, dword [esi]
add ecx, edi
cmp ecx, dword [eax]
jae 0x10186e66
mov dword [eax], ecx
mov dword [eax + 4], ebp
mov dword [eax + 8], ebx
mov byte [eax - 0xc], 0
dec edx
sub esi, 4
sub eax, 0x2c
cmp edx, 2
jae 0x10186e52
mov edx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
inc edx
mov esi, dword [esp + 0x70]
test ebx, ebx
mov ebp, dword [esp + 0x58]
cmove ecx, edx
add esi, edx
cmp dword [esp + 0x74], esi
mov dword [esp + 0x20], ecx
cmovb esi, dword [esp + 0x74]
cmp edx, esi
jae 0x10186ee1
mov eax, dword [esp + 0x60]
mov ecx, edx
mov edi, dword [esp + 0x30]
add eax, edx
sub edi, dword [esp + 0x60]
nop dword [eax + eax]
movups xmm1, xmmword [eax + edi]
movups xmm0, xmmword [eax]
pcmpeqb xmm1, xmm0
pmovmskb edx, xmm1
xor edx, 0xffff
jne 0x10186ed5
add ecx, 0x10
add eax, 0x10
cmp ecx, esi
jb 0x10186eb0
mov edx, esi
jmp 0x10186ee1
bsf eax, edx
mov edx, esi
add ecx, eax
cmp ecx, esi
cmovb edx, ecx
mov esi, dword [esp + 0x24]
or eax, 0xffffffff
sub eax, esi
mov dword [esp + 0x40], edx
add edx, eax
mov dword [esp + 0x44], edx
cmp edx, 2
jb 0x10187069
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x68]
mov ebx, dword [ebp + 0xa94]
add edi, esi
movzx eax, byte [esi + ecx]
push eax
mov eax, dword [esp + 0x34]
movzx eax, byte [esi + eax]
push eax
movzx eax, byte [esi + ecx - 1]
push 1
push eax
push edi
push ebp
call fcn.10185ff0
mov esi, eax
mov edx, ebx
and edx, edi
add esp, 0x18
cmp dword [esp + 0x14], 7
mov eax, 0x35d0
mov ecx, 0x3600
cmovl ecx, eax
inc edi
add edx, ecx
and edi, ebx
movzx ecx, word [ebp + edx*2]
shr ecx, 4
mov edx, dword [esp + 0x18]
movzx eax, byte [ecx + 0x104a0ba8]
add esi, eax
imul eax, dword [esp + 0x1c], 0x110
add eax, dword [esp + 0x24]
add esi, dword [ebp + eax*4 + 0xbd48]
movzx eax, word [ebp + edi*2 + 0x6b40]
add esi, dword [esp + 0x3c]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x104a0ba8]
movzx eax, word [ebp + 0x6c2a]
add ecx, esi
mov esi, dword [esp + 0x40]
xor eax, 0x7f0
add esi, dword [esp + 0x6c]
shr eax, 4
movzx ebx, byte [eax + 0x104a0ba8]
add ebx, ecx
cmp edx, esi
jae 0x10186fdf
imul eax, edx, 0x2c
mov ecx, esi
mov dword [esp + 0x18], esi
add eax, 0x10df8
add eax, ebp
sub ecx, edx
nop word [eax + eax]
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x10186fd0
movzx eax, word [ebp + edi*2 + 0x6d20]
xor eax, 0x7f0
imul ecx, esi, 0x2c
shr eax, 4
mov esi, dword [esp + 0x60]
movzx edx, byte [eax + 0x104a0ba8]
add ecx, ebp
movzx eax, word [ebp + 0x6c42]
shr eax, 4
movzx eax, byte [eax + 0x104a0ba8]
add edx, eax
imul eax, edi, 0x110
add eax, dword [esp + 0x44]
add edx, dword [ebp + eax*4 + 0xbd48]
add edx, ebx
mov ebx, dword [esp + 0x28]
cmp edx, dword [ecx + 0x10df8]
jae 0x1018706d
mov eax, dword [esp + 0x24]
mov dword [ecx + 0x10df8], edx
inc eax
mov edx, dword [esp + 0x6c]
add eax, edx
mov dword [ecx + 0x10dfc], eax
mov dword [ecx + 0x10e00], 0
mov word [ecx + 0x10dec], 0x101
mov dword [ecx + 0x10df0], edx
mov dword [ecx + 0x10df4], ebx
jmp 0x10187071
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x6c]
mov edi, dword [esp + 0x34]
inc ebx
mov dword [esp + 0x28], ebx
cmp ebx, 4
jb 0x10186cd0
mov ebx, dword [esp + 0x48]
mov ecx, edi
cmp ebx, ecx
jbe 0x101870b4
lea eax, [ebp + 0x1f8]
xor esi, esi
mov ebx, ecx
cmp ecx, dword [eax]
jbe 0x101870a8
nop dword [eax + eax]
lea eax, [eax + 8]
inc esi
cmp ecx, dword [eax]
ja 0x101870a0
mov dword [ebp + esi*8 + 0x1f8], ecx
inc esi
mov dword [esp + 0x38], esi
cmp ebx, dword [esp + 0x20]
jb 0x101874ae
mov eax, dword [esp + 0x14]
add edx, ebx
mov ebx, dword [esp + 0x18]
movzx eax, word [ebp + eax*2 + 0x6c20]
shr eax, 4
movzx eax, byte [eax + 0x104a0ba8]
add dword [esp + 0x4c], eax
cmp ebx, edx
jae 0x1018710f
imul eax, ebx, 0x2c
mov ecx, edx
mov dword [esp + 0x18], edx
add eax, 0x10df8
add eax, ebp
sub ecx, ebx
nop dword [eax]
nop dword [eax + eax]
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x10187100
mov edx, dword [esp + 0x20]
lea eax, [ebp + 0x1f8]
xor ecx, ecx
mov dword [esp + 0x28], ecx
cmp edx, dword [eax]
jbe 0x1018712f
lea eax, [eax + 8]
inc ecx
cmp edx, dword [eax]
ja 0x10187123
mov dword [esp + 0x28], ecx
mov edi, dword [esp + 0x70]
lea ecx, [ecx + 0x3f]
lea ebx, [ecx*8]
mov dword [esp + 0x40], 0x35c0
mov ecx, dword [esp + 0x6c]
lea esi, [edx + 1]
inc edi
add ebx, ebp
add edi, edx
mov dword [esp + 0x58], ebx
lea eax, [edx + ecx]
sub ecx, dword [esp + 0x70]
imul edx, eax, 0x2c
imul eax, dword [esp + 0x1c], 0x110
mov dword [esp + 0x1c], ecx
mov ecx, 0xfffffffd
add edx, 0x10df8
add eax, dword [esp + 0x20]
add edx, ebp
lea eax, [eax*4 + 0x7500]
add eax, ebp
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x70]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x70]
sub ecx, eax
not eax
mov dword [esp + 0x50], ecx
mov dword [esp + 0x70], eax
mov ebx, dword [ebx + 4]
add eax, edi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x30], edx
mov dword [esp + 0x24], edi
cmp eax, 6
jae 0x101871bf
add ecx, edi
jmp 0x101871c4
mov ecx, 3
cmp ebx, 0x80
jae 0x101871da
shl ecx, 7
add ecx, ebx
mov ecx, dword [ebp + ecx*4 + 0x10594]
jmp 0x1018722f
mov eax, ebx
cmp ebx, 0x80000
jae 0x101871f3
shr eax, 6
movzx eax, byte [eax + 0x104a0c28]
add eax, 0xc
jmp 0x10187217
cmp ebx, 0x80000000
jae 0x1018720a
shr eax, 0x12
movzx eax, byte [eax + 0x104a0c28]
add eax, 0x24
jmp 0x10187217
shr eax, 0x1e
movzx eax, byte [eax + 0x104a0c28]
add eax, 0x3c
shl ecx, 6
add ecx, eax
mov eax, ebx
and eax, 0xf
mov ecx, dword [ebp + ecx*4 + 0x10194]
add ecx, dword [ebp + eax*4 + 0x10d9c]
mov eax, dword [esp + 0x20]
mov eax, dword [eax]
add eax, ecx
add eax, dword [esp + 0x4c]
mov dword [esp + 0x3c], eax
cmp eax, dword [edx]
jae 0x10187256
mov dword [edx], eax
mov eax, dword [esp + 0x6c]
mov dword [edx + 4], eax
lea eax, [ebx + 4]
mov dword [edx + 8], eax
mov byte [edx - 0xc], 0
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x70]
add eax, edi
cmp eax, dword [ecx]
jne 0x10187493
mov eax, dword [esp + 0x60]
mov esi, edi
mov ecx, dword [esp + 0x5c]
sub eax, ebx
dec eax
mov edx, ecx
cmp dword [esp + 0x74], edi
mov dword [esp + 0x34], eax
cmovb esi, dword [esp + 0x74]
cmp ecx, esi
jae 0x101872d9
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x34]
add eax, edi
sub edx, dword [esp + 0x60]
mov dword [esp + 0x44], edx
nop word [eax + eax]
movups xmm1, xmmword [edx + eax]
movups xmm0, xmmword [eax]
pcmpeqb xmm1, xmm0
pmovmskb edx, xmm1
xor edx, 0xffff
jne 0x101872c9
mov edx, dword [esp + 0x44]
add ecx, 0x10
add eax, 0x10
cmp ecx, esi
jb 0x101872a0
mov edx, esi
jmp 0x101872d5
bsf eax, edx
mov edx, esi
add ecx, eax
cmp ecx, esi
cmovb edx, ecx
mov ecx, dword [esp + 0x5c]
or eax, 0xffffffff
mov dword [esp + 0x44], edx
sub eax, edi
sub eax, dword [esp + 0x70]
add edx, eax
mov dword [esp + 0x2c], edx
cmp edx, 2
jb 0x1018745a
mov eax, dword [esp + 0x68]
mov edx, dword [esp + 0x60]
dec eax
add ecx, eax
mov edi, dword [ebp + 0xa94]
mov eax, dword [esp + 0x5c]
mov esi, edi
and esi, ecx
movzx eax, byte [edx + eax - 1]
mov edx, dword [esp + 0x34]
push eax
mov eax, dword [esp + 0x28]
add eax, dword [esp + 0x74]
movzx eax, byte [eax + edx]
mov edx, dword [esp + 0x64]
push eax
mov eax, dword [esp + 0x64]
push 1
movzx eax, byte [edx + eax - 2]
push eax
push ecx
push ebp
call fcn.10185ff0
add esp, 0x18
mov ecx, 0x35f0
cmp dword [esp + 0x14], 7
cmovl ecx, dword [esp + 0x40]
add eax, dword [esp + 0x3c]
add ecx, esi
movzx ecx, word [ebp + ecx*2]
shr ecx, 4
movzx edx, byte [ecx + 0x104a0ba8]
add edx, eax
lea eax, [esi + 1]
and eax, edi
mov esi, dword [esp + 0x44]
add esi, dword [esp + 0x6c]
mov dword [esp + 0x3c], eax
movzx eax, word [ebp + eax*2 + 0x6b20]
xor eax, 0x7f0
shr eax, 4
movzx ecx, byte [eax + 0x104a0ba8]
movzx eax, word [ebp + 0x6c28]
add ecx, edx
mov edx, dword [esp + 0x18]
xor eax, 0x7f0
shr eax, 4
movzx edi, byte [eax + 0x104a0ba8]
add edi, ecx
cmp edx, esi
jae 0x101873d0
imul eax, edx, 0x2c
mov ecx, esi
mov dword [esp + 0x18], esi
add eax, 0x10df8
add eax, ebp
sub ecx, edx
mov dword [eax + 0x2c], 0x40000000
lea eax, [eax + 0x2c]
sub ecx, 1
jne 0x101873c1
mov ecx, dword [esp + 0x3c]
movzx eax, word [ebp + ecx*2 + 0x6d00]
xor eax, 0x7f0
shr eax, 4
movzx edx, byte [eax + 0x104a0ba8]
movzx eax, word [ebp + 0x6c40]
shr eax, 4
movzx eax, byte [eax + 0x104a0ba8]
add edx, eax
imul eax, ecx, 0x110
imul ecx, esi, 0x2c
add eax, dword [esp + 0x2c]
add ecx, ebp
add edx, dword [ebp + eax*4 + 0xbd48]
add edx, edi
mov edi, dword [esp + 0x24]
cmp edx, dword [ecx + 0x10df8]
jae 0x1018745a
mov eax, dword [esp + 0x1c]
add eax, edi
mov dword [ecx + 0x10df8], edx
mov dword [ecx + 0x10dfc], eax
mov eax, dword [esp + 0x6c]
mov dword [ecx + 0x10df0], eax
lea eax, [ebx + 4]
mov dword [ecx + 0x10e00], 0
mov word [ecx + 0x10dec], 0x101
mov dword [ecx + 0x10df4], eax
mov ecx, dword [esp + 0x28]
mov ebx, dword [esp + 0x58]
inc ecx
add ebx, 8
mov dword [esp + 0x28], ecx
mov dword [esp + 0x58], ebx
cmp ecx, dword [esp + 0x38]
je 0x101874ae
mov edx, dword [esp + 0x30]
mov esi, dword [esp + 0x5c]
add edx, 0x2c
add dword [esp + 0x20], 4
inc esi
mov ecx, dword [esp + 0x50]
inc edi
mov eax, dword [esp + 0x70]
jmp 0x101871a5
add dword [esp + 0x20], 4
add edx, 0x2c
mov ebx, dword [esp + 0x58]
inc esi
mov ecx, dword [esp + 0x50]
inc edi
mov eax, dword [esp + 0x70]
jmp 0x101871a5
mov eax, dword [esp + 0x18]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x44
ret