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

Disassembly:
push ebp
push edi
mov edi, 1
push esi
mov esi, eax
push ebx
sub esp, 0xcc
mov ebx, dword [eax + 0xb4]
mov dword [esp + 0x9c], ecx
mov ebp, dword [eax + 0xd8c]
mov eax, edx
mov dword [esp + 0x80], edx
mov edx, dword [esp + 0x9c]
mov word [esp + 0xa4], 0
mov ecx, dword [ebx + 0x3318]
mov word [esp + 0xa6], 0
mov dword [esp + 0x44], ebx
sar edx, cl
imul edx, dword [ebx + 0x3330]
sar eax, cl
shl edi, cl
add edx, eax
lea eax, [ebp + edx*8]
mov ecx, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x84], eax
mov eax, dword [ebx + 0x44]
test eax, eax
je 0x6c49c1dc
cmp byte [ebx + 0x3300], 0
mov dword [esp + 0x70], 1
je 0x6c49c1dc
mov eax, dword [esp + 0x80]
test eax, eax
je 0x6c49bd47
lea eax, [ebp + edx*8 - 8]
mov ebp, dword [eax + 4]
mov eax, dword [eax]
mov dword [esp + 0x88], ebp
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x80]
mov edx, dword [ebx + 0x3328]
add eax, edi
cmp eax, edx
cmovle edx, eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x5c], edx
mov edx, dword [ebx + 0x332c]
add eax, edi
cmp eax, edx
cmovle edx, eax
cmp dword [esp + 0x9c], edx
mov dword [esp + 0x90], edx
jge 0x6c49c299
mov ecx, dword [esp + 0x9c]
mov eax, 8
mov edi, dword [esp + 0x80]
mov dword [esp + 0x8c], esi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x44]
test edi, edi
cmovne eax, dword [esp + 0x80]
mov dword [esp + 0x7c], eax
nop
lea esi, [esi]
mov ebx, dword [esp + 0x5c]
cmp dword [esp + 0x7c], ebx
jge 0x6c49c278
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x4c]
mov eax, dword [esp + 0x4c]
mov ebp, dword [esp + 0x7c]
add edi, 4
sar esi, 2
mov dword [esp + 0x6c], edi
shr eax, 0x1f
sar edi, 2
mov dword [esp + 0x44], ebp
mov ebp, dword [esp + 0x8c]
mov dword [esp + 0x64], esi
mov dword [esp + 0x68], edi
mov byte [esp + 0x74], al
jmp 0x6c49c034
cmp byte [esp + 0x74], 0
jne 0x6c49c1d2
mov ebx, dword [esp + 0x54]
mov edx, dword [esp + 0x48]
sar ebx, cl
mov edx, dword [edx + 0x334c]
mov dword [esp + 0x50], ebx
mov ebx, 2
cmp dword [esp + 0x50], edx
mov dword [esp + 0x94], edx
jge 0x6c49be76
movzx ecx, byte [esp + 0x60]
mov edx, dword [esp + 0x4c]
sar edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x58], edx
cmp edx, dword [ecx + 0x3350]
jge 0x6c49be76
mov edx, dword [esp + 0x94]
imul edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x50]
add ebx, dword [ebp + 0x1cb8]
movzx ebx, byte [ebx + edx]
mov byte [esp + 0xa4], bl
mov ebx, dword [esp + 0x6c]
shr ebx, 0x1f
test al, al
mov byte [esp + 0x50], bl
jne 0x6c49c210
test bl, bl
jne 0x6c49c210
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x54]
movzx ecx, byte [esp + 0x60]
mov eax, dword [eax + 0x334c]
sar ebx, cl
mov dword [esp + 0x94], eax
mov eax, 2
cmp ebx, dword [esp + 0x94]
jge 0x6c49bef0
mov edx, dword [esp + 0x6c]
sar edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x54], edx
cmp edx, dword [ecx + 0x3350]
jge 0x6c49bef0
mov eax, dword [esp + 0x94]
imul eax, edx
mov edx, dword [ebp + 0x1cb8]
add edx, ebx
movzx eax, byte [edx + eax]
nop
mov byte [esp + 0xa5], al
mov eax, dword [esp + 0x44]
shr eax, 0x1f
test al, al
jne 0x6c49c200
cmp byte [esp + 0x74], 0
jne 0x6c49c200
mov ebx, dword [esp + 0x44]
movzx ecx, byte [esp + 0x60]
mov edx, dword [esp + 0x48]
sar ebx, cl
mov edx, dword [edx + 0x334c]
mov dword [esp + 0x54], ebx
mov ebx, 2
cmp dword [esp + 0x54], edx
mov dword [esp + 0x94], edx
jge 0x6c49bf70
mov edx, dword [esp + 0x4c]
sar edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x58], edx
cmp edx, dword [ecx + 0x3350]
jge 0x6c49bf70
mov edx, dword [esp + 0x94]
imul edx, dword [esp + 0x58]
mov ebx, dword [esp + 0x54]
add ebx, dword [ebp + 0x1cb8]
movzx ebx, byte [ebx + edx]
lea esi, [esi]
test al, al
mov byte [esp + 0xa6], bl
jne 0x6c49c1f5
cmp byte [esp + 0x50], 0
jne 0x6c49c1f5
mov ebx, dword [esp + 0x44]
movzx ecx, byte [esp + 0x60]
mov eax, dword [esp + 0x48]
sar ebx, cl
mov dword [esp + 0x54], ebx
mov ebx, dword [eax + 0x334c]
mov eax, 2
cmp dword [esp + 0x54], ebx
jge 0x6c49bfd5
mov edx, dword [esp + 0x6c]
sar edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x50], edx
cmp edx, dword [ecx + 0x3350]
jge 0x6c49bfd5
imul ebx, edx
mov edx, dword [esp + 0x54]
add edx, dword [ebp + 0x1cb8]
movzx eax, byte [edx + ebx]
mov byte [esp + 0xa7], al
lea eax, [esp + 0xa4]
mov dword [esp + 0x10], eax
lea eax, [esp + 0xb8]
mov dword [esp + 0xc], eax
lea ebx, [esp + 0xa6]
lea eax, [esp + 0xb0]
mov dword [esp + 0x14], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], edi
mov dword [esp], esi
call dword [ebp + 0x17a4]
mov edx, dword [ebp + 0xb4]
mov dword [esp + 0x48], edx
mov ecx, edx
add dword [esp + 0x44], 8
mov edi, dword [esp + 0x5c]
cmp dword [esp + 0x44], edi
jge 0x6c49c278
mov ebx, dword [ebp + 0x16b0]
mov edx, dword [esp + 0x64]
mov eax, dword [esp + 0x44]
imul edx, ebx
imul ebx, dword [esp + 0x68]
sar eax, 3
add eax, dword [ebp + 0x1ca0]
movzx edx, byte [eax + edx]
movzx eax, byte [eax + ebx]
mov ebx, eax
or bl, dl
je 0x6c49c021
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x48]
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x44]
mov edx, dword [edx + 0x333c]
mov ecx, dword [edi + 0x3308]
sub esi, 1
mov edi, esi
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x4c]
sar edi, cl
add edi, dword [ebp + 0x1c94]
mov dword [esp + 0x54], esi
mov esi, dword [esp + 0x44]
sar edx, cl
imul edx, dword [esp + 0x40]
sar esi, cl
movsx ebx, byte [edi + edx]
add edx, dword [ebp + 0x1c94]
movsx edx, byte [edx + esi]
lea edx, [ebx + edx + 1]
mov ebx, dword [esp + 0x6c]
sar edx, 1
sar ebx, cl
mov ecx, dword [esp + 0x40]
imul ecx, ebx
mov ebx, dword [ebp + 0x1c94]
add ebx, esi
movsx edi, byte [edi + ecx]
mov esi, 0x33
movsx ecx, byte [ebx + ecx]
lea ecx, [edi + ecx + 1]
mov edi, dword [esp + 0x84]
sar ecx, 1
add edi, edx
cmp edi, 0x33
cmovg edi, esi
xor ebx, ebx
test edi, edi
cmovs edi, ebx
movzx edi, byte [edi + 0x6c57ee40]
mov dword [esp + 0xb0], edi
mov edi, dword [esp + 0x84]
add edi, ecx
cmp edi, 0x33
cmovle esi, edi
test esi, esi
cmovs esi, ebx
movzx ebx, byte [esi + 0x6c57ee40]
mov esi, dword [esp + 0x60]
mov dword [esp + 0xb4], ebx
xor ebx, ebx
test esi, esi
je 0x6c49c157
mov edi, dword [esp + 0x60]
lea esi, [edx + edi*2 - 2]
mov edx, dword [esp + 0x78]
and edx, 0xfffffffe
add esi, edx
mov edx, 0x35
cmp esi, 0x35
cmovle edx, esi
test edx, edx
cmovns ebx, edx
movzx ebx, byte [ebx + 0x6c57ee80]
xor edx, edx
test eax, eax
mov dword [esp + 0xb8], ebx
je 0x6c49c188
lea ecx, [ecx + eax*2 - 2]
mov eax, dword [esp + 0x78]
and eax, 0xfffffffe
add ecx, eax
mov eax, 0x35
cmp ecx, 0x35
cmovle eax, ecx
test eax, eax
cmovns edx, eax
movzx edx, byte [edx + 0x6c57ee80]
mov eax, dword [ebp + 0xa0]
mov ebx, dword [esp + 0x48]
mov dword [esp + 0xbc], edx
mov edx, dword [esp + 0x4c]
mov esi, dword [esp + 0x44]
mov edi, dword [eax + 0x20]
mov ecx, dword [ebx + 0x38]
imul edx, edi
shl esi, cl
lea esi, [edx + esi]
add esi, dword [eax]
mov eax, dword [esp + 0x70]
test eax, eax
je 0x6c49c220
mov eax, dword [esp + 0x54]
mov ecx, dword [ebx + 0x331c]
shr eax, 0x1f
test al, al
mov dword [esp + 0x60], ecx
je 0x6c49be10
mov ebx, 2
jmp 0x6c49be76
mov eax, dword [esi + 0xb8]
cmp byte [eax + 0x28], 0
setne al
movzx eax, al
mov dword [esp + 0x70], eax
jmp 0x6c49bd25
mov eax, 2
jmp 0x6c49bfd5
mov ebx, 2
jmp 0x6c49bf70
mov eax, 2
jmp 0x6c49bef0
lea eax, [esp + 0xb8]
lea ecx, [esp + 0xa6]
mov dword [esp + 0xc], eax
lea ebx, [esp + 0xa4]
lea eax, [esp + 0xb0]
mov dword [esp + 0x14], ecx
mov dword [esp + 4], edi
mov dword [esp], esi
mov dword [esp + 0x10], ebx
mov dword [esp + 8], eax
call dword [ebp + 0x1794]
mov esi, dword [ebp + 0xb4]
add dword [esp + 0x44], 8
mov edi, dword [esp + 0x5c]
cmp dword [esp + 0x44], edi
mov dword [esp + 0x48], esi
mov ecx, esi
jl 0x6c49c034
add dword [esp + 0x4c], 8
mov ebp, dword [esp + 0x90]
cmp dword [esp + 0x4c], ebp
jl 0x6c49bdc0
mov esi, dword [esp + 0x8c]
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x80]
mov ebx, 0x10
mov ebp, esi
mov esi, dword [esp + 0x44]
mov dword [esp + 0x60], 1
test eax, eax
cmovne ebx, dword [esp + 0x80]
mov dword [esp + 0x94], ebx
mov ecx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x58], ecx
cmp ecx, ebx
jge 0x6c49c6df
mov ebx, ebp
mov eax, dword [esp + 0x5c]
cmp dword [esp + 0x94], eax
jge 0x6c49c6c7
mov eax, dword [esp + 0x58]
mov ebp, dword [esp + 0x58]
mov edi, dword [esp + 0x58]
mov edx, dword [esp + 0x58]
shr eax, 0x1f
add ebp, eax
sar ebp, 1
add edi, 8
mov dword [esp + 0x74], ebp
mov ebp, dword [esp + 0x94]
sar edx, 2
mov dword [esp + 0x6c], edi
sar edi, 2
mov dword [esp + 0x68], edi
mov edi, esi
mov dword [esp + 0x64], edx
mov byte [esp + 0x8c], al
mov esi, ebp
jmp 0x6c49c524
cmp byte [esp + 0x8c], 0
jne 0x6c49c64c
mov edx, dword [esp + 0x44]
mov byte [esp + 0x3b], 2
sar edx, cl
mov dword [esp + 0x50], edx
mov edx, dword [edi + 0x334c]
cmp dword [esp + 0x50], edx
mov dword [esp + 0x4c], edx
jge 0x6c49c391
mov edx, dword [esp + 0x58]
movzx ecx, byte [esp + 0x7c]
sar edx, cl
cmp edx, dword [edi + 0x3350]
jge 0x6c49c391
mov ecx, dword [esp + 0x4c]
imul ecx, edx
mov edx, dword [esp + 0x50]
add edx, dword [ebx + 0x1cb8]
movzx ecx, byte [edx + ecx]
mov byte [esp + 0x3b], cl
movzx edx, byte [esp + 0x3b]
mov byte [esp + 0xa4], dl
mov edx, dword [esp + 0x6c]
shr edx, 0x1f
test al, al
mov byte [esp + 0x50], dl
jne 0x6c49c670
test dl, dl
jne 0x6c49c670
mov eax, dword [esp + 0x44]
movzx ecx, byte [esp + 0x7c]
mov edx, dword [edi + 0x334c]
sar eax, cl
mov dword [esp + 0x44], eax
mov eax, 2
cmp dword [esp + 0x44], edx
mov dword [esp + 0x54], edx
jge 0x6c49c400
mov edx, dword [esp + 0x6c]
sar edx, cl
cmp edx, dword [edi + 0x3350]
jge 0x6c49c400
mov eax, dword [esp + 0x54]
imul eax, edx
mov edx, dword [esp + 0x44]
add edx, dword [ebx + 0x1cb8]
movzx eax, byte [edx + eax]
nop
mov byte [esp + 0xa5], al
mov eax, esi
shr eax, 0x1f
test al, al
jne 0x6c49c660
cmp byte [esp + 0x8c], 0
jne 0x6c49c660
movzx ecx, byte [esp + 0x7c]
mov edx, esi
mov byte [esp + 0x3b], 2
sar edx, cl
mov dword [esp + 0x44], edx
mov edx, dword [edi + 0x334c]
cmp dword [esp + 0x44], edx
mov dword [esp + 0x4c], edx
jge 0x6c49c470
mov edx, dword [esp + 0x58]
sar edx, cl
cmp edx, dword [edi + 0x3350]
jge 0x6c49c470
mov ecx, dword [esp + 0x4c]
imul ecx, edx
mov edx, dword [esp + 0x44]
add edx, dword [ebx + 0x1cb8]
movzx ecx, byte [edx + ecx]
mov byte [esp + 0x3b], cl
nop
lea esi, [esi]
movzx edx, byte [esp + 0x3b]
test al, al
mov byte [esp + 0xa6], dl
jne 0x6c49c656
cmp byte [esp + 0x50], 0
jne 0x6c49c656
movzx ecx, byte [esp + 0x7c]
mov eax, esi
mov edx, dword [edi + 0x334c]
sar eax, cl
mov dword [esp + 0x44], eax
mov eax, 2
cmp dword [esp + 0x44], edx
mov dword [esp + 0x50], edx
jge 0x6c49c4d8
mov edx, dword [esp + 0x6c]
sar edx, cl
cmp edx, dword [edi + 0x3350]
mov dword [esp + 0x4c], edx
jge 0x6c49c4d8
mov eax, dword [esp + 0x50]
imul eax, edx
mov edx, dword [esp + 0x44]
add edx, dword [ebx + 0x1cb8]
movzx eax, byte [edx + eax]
mov byte [esp + 0xa7], al
lea eax, [esp + 0xa8]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x48]
lea ecx, [esp + 0xa6]
lea edi, [esp + 0xa4]
mov dword [esp + 0xc], edi
mov dword [esp + 0x10], ecx
mov dword [esp + 4], eax
mov dword [esp], ebp
call dword [ebx + 0x17ac]
mov edi, dword [ebx + 0xb4]
add esi, 0x10
cmp esi, dword [esp + 0x5c]
jge 0x6c49c6c5
mov ecx, dword [ebx + 0x16b0]
mov eax, esi
mov edx, dword [esp + 0x64]
sar eax, 3
add eax, dword [ebx + 0x1ca0]
imul edx, ecx
cmp byte [eax + edx], 2
sete dl
imul ecx, dword [esp + 0x68]
cmp byte [eax + ecx], 2
sete byte [esp + 0x50]
je 0x6c49c557
test dl, dl
je 0x6c49c517
lea eax, [esi - 1]
movzx ecx, byte [edi + 0x3308]
mov ebp, eax
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x58]
sar ebp, cl
add ebp, dword [ebx + 0x1c94]
sar eax, cl
imul eax, dword [edi + 0x333c]
mov dword [esp + 0x48], ebp
movzx ecx, byte [ebp + eax]
mov ebp, esi
add eax, dword [ebx + 0x1c94]
mov byte [esp + 0x7c], cl
movzx ecx, byte [edi + 0x3308]
sar ebp, cl
movzx eax, byte [eax + ebp]
mov dword [esp + 0x54], ebp
mov ebp, dword [ebx + 0x1c94]
add ebp, dword [esp + 0x54]
mov byte [esp + 0x3b], al
mov eax, dword [esp + 0x6c]
sar eax, cl
mov ecx, dword [edi + 0x333c]
imul ecx, eax
mov eax, dword [esp + 0x48]
movzx eax, byte [eax + ecx]
movzx ecx, byte [ebp + ecx]
mov byte [esp + 0x4c], al
mov byte [esp + 0x48], cl
xor ecx, ecx
test dl, dl
jne 0x6c49cbe5
xor eax, eax
cmp byte [esp + 0x50], 0
mov dword [esp + 0xa8], ecx
jne 0x6c49cb83
mov dword [esp + 0xac], eax
mov edx, dword [esp + 0x60]
mov ebp, esi
mov eax, dword [ebx + 0xa0]
shr ebp, 0x1f
mov ecx, dword [edi + 0x38]
add ebp, esi
sar ebp, 1
mov edx, dword [eax + edx*4 + 0x20]
shl ebp, cl
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x74]
imul edx, dword [esp + 0x48]
add ebp, edx
mov edx, dword [esp + 0x60]
add ebp, dword [eax + edx*4]
mov eax, dword [esp + 0x70]
test eax, eax
je 0x6c49c680
mov eax, dword [esp + 0x44]
mov ecx, dword [edi + 0x331c]
shr eax, 0x1f
test al, al
mov dword [esp + 0x7c], ecx
je 0x6c49c338
mov byte [esp + 0x3b], 2
jmp 0x6c49c391
mov eax, 2
jmp 0x6c49c4d8
mov byte [esp + 0x3b], 2
jmp 0x6c49c470
mov eax, 2
jmp 0x6c49c400
mov edi, dword [esp + 0x48]
lea edx, [esp + 0xa6]
add esi, 0x10
lea ecx, [esp + 0xa4]
lea eax, [esp + 0xa8]
mov dword [esp + 0x10], edx
mov dword [esp + 4], edi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], eax
mov dword [esp], ebp
call dword [ebx + 0x179c]
mov edi, dword [ebx + 0xb4]
cmp esi, dword [esp + 0x5c]
jl 0x6c49c524
mov esi, edi
add dword [esp + 0x58], 0x10
mov ebp, dword [esp + 0x90]
cmp dword [esp + 0x58], ebp
jl 0x6c49c2e0
mov ebp, ebx
add dword [esp + 0x60], 1
cmp dword [esp + 0x60], 3
jne 0x6c49c2c4
mov dword [esp + 0x44], esi
mov eax, dword [esp + 0x5c]
mov esi, ebp
mov edi, dword [esp + 0x44]
mov ebp, dword [esp + 0x5c]
mov edx, dword [esp + 0x90]
sub eax, 8
cmp dword [edi + 0x3328], ebp
cmove eax, ebp
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x9c]
test eax, eax
mov eax, 8
cmovne eax, dword [esp + 0x9c]
cmp eax, edx
mov dword [esp + 0x4c], eax
jge 0x6c49d37d
mov edx, dword [esp + 0x80]
mov ebx, 0
mov ebp, dword [esp + 0x80]
mov dword [esp + 0x74], esi
sub edx, 8
test ebp, ebp
cmovne ebx, edx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x68], ebx
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x68]
sub edi, 1
mov dword [esp + 0x6c], edi
shr edi, 0x1f
cmp dword [esp + 0x5c], esi
mov dword [esp + 0x44], esi
mov dword [esp + 0x64], edi
jle 0x6c49ccd0
mov esi, dword [esp + 0x74]
mov ebx, dword [esp + 0x44]
jmp 0x6c49cac3
mov ebp, dword [esp + 0x78]
mov dword [esp + 0x60], ebp
mov ebp, dword [esp + 0x84]
lea edi, [ebp + ebx]
cmp edi, 0x33
mov dword [esp + 0x58], eax
mov eax, 0x33
cmovg edi, eax
xor ecx, ecx
test edi, edi
cmovs edi, ecx
add ebp, edx
movzx edi, byte [edi + 0x6c57ee40]
cmp ebp, 0x33
cmovg ebp, eax
test ebp, ebp
cmovs ebp, ecx
movzx ecx, byte [ebp + 0x6c57ee40]
mov dword [esp + 0xb0], edi
mov edi, dword [esp + 0x58]
mov dword [esp + 0xb4], ecx
xor ecx, ecx
test edi, edi
je 0x6c49c816
mov ebp, dword [esp + 0x58]
mov eax, dword [esp + 0x60]
lea ebx, [ebx + ebp*2 - 2]
and eax, 0xfffffffe
add ebx, eax
mov eax, 0x35
cmp ebx, 0x35
cmovle eax, ebx
test eax, eax
cmovns ecx, eax
movzx ecx, byte [ecx + 0x6c57ee80]
movzx eax, byte [esp + 0x54]
mov dword [esp + 0xb8], ecx
xor ecx, ecx
test eax, eax
je 0x6c49c84c
lea eax, [edx + eax*2 - 2]
mov edx, dword [esp + 0x60]
and edx, 0xfffffffe
add edx, eax
mov eax, 0x35
cmp edx, 0x35
cmovle eax, edx
test eax, eax
cmovns ecx, eax
movzx ecx, byte [ecx + 0x6c57ee80]
mov eax, dword [esi + 0xa0]
mov ebx, dword [esp + 0x48]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0xbc], ecx
mov edi, dword [esp + 0x44]
mov ebp, dword [eax + 0x20]
mov ecx, dword [ebx + 0x38]
imul edx, ebp
shl edi, cl
lea edi, [edx + edi]
mov edx, dword [esp + 0x70]
add edi, dword [eax]
test edx, edx
je 0x6c49cc80
mov ecx, dword [ebx + 0x331c]
mov ebx, dword [esp + 0x44]
movzx eax, byte [esp + 0x64]
mov dword [esp + 0x8c], ecx
shr ebx, 0x1f
test bl, bl
mov byte [esp + 0x54], bl
mov byte [esp + 0x94], al
jne 0x6c49cc70
test al, al
jne 0x6c49cc70
mov edx, dword [esp + 0x48]
mov eax, 2
mov ebx, dword [esp + 0x44]
mov edx, dword [edx + 0x334c]
sar ebx, cl
cmp ebx, edx
mov dword [esp + 0x34], edx
jge 0x6c49c903
movzx ecx, byte [esp + 0x8c]
mov edx, dword [esp + 0x6c]
sar edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x60], edx
cmp edx, dword [ecx + 0x3350]
jge 0x6c49c903
mov eax, dword [esp + 0x34]
imul eax, edx
mov edx, dword [esi + 0x1cb8]
add edx, ebx
movzx eax, byte [edx + eax]
mov edx, dword [esp + 0x50]
mov byte [esp + 0xa4], al
shr edx, 0x1f
test dl, dl
jne 0x6c49cc60
cmp byte [esp + 0x94], 0
jne 0x6c49cc60
mov ebx, dword [esp + 0x50]
movzx ecx, byte [esp + 0x8c]
mov eax, dword [esp + 0x48]
sar ebx, cl
mov eax, dword [eax + 0x334c]
mov dword [esp + 0x58], ebx
mov ebx, 2
cmp dword [esp + 0x58], eax
mov dword [esp + 0x94], eax
jge 0x6c49c985
mov eax, dword [esp + 0x6c]
sar eax, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x60], eax
cmp eax, dword [ecx + 0x3350]
jge 0x6c49c985
mov eax, dword [esp + 0x94]
imul eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x58]
add ebx, dword [esi + 0x1cb8]
movzx ebx, byte [ebx + eax]
mov byte [esp + 0xa5], bl
mov ebx, dword [esp + 0x4c]
shr ebx, 0x1f
cmp byte [esp + 0x54], 0
mov byte [esp + 0x94], bl
jne 0x6c49cc51
test bl, bl
jne 0x6c49cc51
mov ebx, dword [esp + 0x44]
movzx ecx, byte [esp + 0x8c]
mov eax, dword [esp + 0x48]
sar ebx, cl
mov eax, dword [eax + 0x334c]
mov dword [esp + 0x54], ebx
mov ebx, 2
cmp dword [esp + 0x54], eax
mov dword [esp + 0x58], eax
jge 0x6c49ca05
mov eax, dword [esp + 0x4c]
sar eax, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x60], eax
cmp eax, dword [ecx + 0x3350]
jge 0x6c49ca05
mov eax, dword [esp + 0x58]
imul eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x54]
add ecx, dword [esi + 0x1cb8]
movzx ebx, byte [ecx + eax]
test dl, dl
mov byte [esp + 0xa6], bl
jne 0x6c49cc47
cmp byte [esp + 0x94], 0
jne 0x6c49cc47
mov ebx, dword [esp + 0x50]
movzx ecx, byte [esp + 0x8c]
mov eax, dword [esp + 0x48]
sar ebx, cl
mov dword [esp + 0x54], ebx
mov ebx, dword [eax + 0x334c]
mov eax, 2
cmp dword [esp + 0x54], ebx
jge 0x6c49ca70
mov edx, dword [esp + 0x4c]
sar edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x50], edx
cmp edx, dword [ecx + 0x3350]
jge 0x6c49ca70
imul ebx, edx
mov edx, dword [esp + 0x54]
add edx, dword [esi + 0x1cb8]
movzx eax, byte [edx + ebx]
mov byte [esp + 0xa7], al
lea eax, [esp + 0xa4]
mov dword [esp + 0x10], eax
lea eax, [esp + 0xb8]
lea ebx, [esp + 0xa6]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x14], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
mov dword [esp], edi
call dword [esi + 0x17a0]
add dword [esp + 0x44], 8
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x5c], ebx
jle 0x6c49ccd0
mov edx, dword [esp + 0x4c]
add ebx, 4
imul edx, dword [esi + 0x16b0]
mov eax, dword [esp + 0x44]
mov ecx, dword [esi + 0x1c9c]
mov dword [esp + 0x50], ebx
add eax, edx
add edx, ebx
sar eax, 2
sar edx, 2
movzx eax, byte [ecx + eax]
movzx edx, byte [ecx + edx]
mov byte [esp + 0x54], dl
or dl, al
je 0x6c49cab0
mov edi, dword [esi + 0xb4]
mov edx, dword [esp + 0x6c]
mov ebp, dword [esp + 0x4c]
mov ebx, dword [esp + 0x44]
mov ecx, dword [edi + 0x3308]
mov dword [esp + 0x48], edi
mov edi, dword [edi + 0x333c]
sar ebp, cl
sar edx, cl
imul edx, edi
imul edi, ebp
sar ebx, cl
add ebx, dword [esi + 0x1c94]
movsx ebp, byte [ebx + edx]
movsx ebx, byte [ebx + edi]
add edx, dword [esi + 0x1c94]
add edi, dword [esi + 0x1c94]
lea ebx, [ebp + ebx + 1]
mov ebp, dword [esp + 0x50]
sar ebx, 1
sar ebp, cl
movsx ecx, byte [edi + ebp]
movsx edx, byte [edx + ebp]
mov edi, dword [esp + 0x44]
lea edx, [edx + ecx + 1]
sar edx, 1
cmp dword [esp + 0x80], edi
jle 0x6c49c792
mov edi, dword [esp + 0x88]
mov ebp, dword [esp + 0x98]
mov dword [esp + 0x60], edi
jmp 0x6c49c7a1
cmp dword [esp + 0x60], 1
mov eax, dword [ebx + 0xb8]
je 0x6c49d2f8
mov eax, dword [eax + 0x20]
movsx ecx, byte [esp + 0x4c]
movsx edx, byte [esp + 0x48]
lea edx, [ecx + edx + 1]
mov ecx, 2
sar edx, 1
add eax, edx
js 0x6c49cbc3
cmp eax, 0x39
mov cl, 0x35
jg 0x6c49cbc3
cmp eax, 0x1d
lea ecx, [eax + 2]
jg 0x6c49d318
add ecx, dword [esp + 0x78]
mov eax, 0x35
cmp ecx, 0x35
cmovle eax, ecx
xor edx, edx
test eax, eax
cmovns edx, eax
movzx eax, byte [edx + 0x6c57ee80]
jmp 0x6c49c5f2
cmp dword [esp + 0x60], 1
mov edx, dword [ebx + 0xb8]
je 0x6c49d2f0
mov edx, dword [edx + 0x20]
movsx ebp, byte [esp + 0x7c]
mov ecx, 2
movsx eax, byte [esp + 0x3b]
lea eax, [ebp + eax + 1]
sar eax, 1
add edx, eax
js 0x6c49cc25
cmp edx, 0x39
mov cl, 0x35
jg 0x6c49cc25
cmp edx, 0x1d
lea ecx, [edx + 2]
jg 0x6c49d300
add ecx, dword [esp + 0x78]
mov eax, 0x35
cmp ecx, 0x35
cmovle eax, ecx
xor edx, edx
test eax, eax
cmovns edx, eax
movzx ecx, byte [edx + 0x6c57ee80]
jmp 0x6c49c5de
mov eax, 2
jmp 0x6c49ca70
mov ebx, 2
jmp 0x6c49ca05
mov ebx, 2
jmp 0x6c49c985
mov eax, 2
jmp 0x6c49c903
lea eax, [esp + 0xb8]
lea edx, [esp + 0xa6]
lea ecx, [esp + 0xa4]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xb0]
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 8], eax
mov dword [esp + 4], ebp
mov dword [esp], edi
call dword [esi + 0x1790]
add dword [esp + 0x44], 8
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x5c], ebx
jg 0x6c49cac3
lea esi, [esi]
add dword [esp + 0x4c], 8
mov ebp, dword [esp + 0x90]
cmp dword [esp + 0x4c], ebp
jl 0x6c49c761
mov esi, dword [esp + 0x74]
mov eax, dword [esp + 0x9c]
mov edx, 0x10
mov edi, esi
mov dword [esp + 0x54], 1
test eax, eax
cmovne edx, dword [esp + 0x9c]
mov dword [esp + 0x84], edx
mov esi, edx
mov ebp, dword [esp + 0x90]
sub esi, 1
mov ebx, edi
cmp dword [esp + 0x84], ebp
mov dword [esp + 0x58], esi
mov eax, dword [esp + 0x58]
jge 0x6c49d35a
mov edx, dword [esp + 0x7c]
add eax, 1
cmp dword [esp + 0x5c], edx
mov dword [esp + 0x50], eax
jle 0x6c49d216
shr eax, 0x1f
mov edi, edx
mov edx, dword [esp + 0x80]
add eax, dword [esp + 0x50]
mov ebp, ebx
sar eax, 1
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0x44], edx
shr eax, 0x1f
mov byte [esp + 0x6c], al
jmp 0x6c49d08c
mov esi, dword [ebp + 0xb4]
mov ebx, edi
mov ecx, dword [esi + 0x3308]
mov dword [esp + 0x48], esi
mov esi, dword [esi + 0x333c]
sar ebx, cl
mov dword [esp + 0x3c], esi
mov esi, dword [esp + 0x58]
mov dword [esp + 0x30], ecx
movzx ecx, byte [esp + 0x30]
add ebx, dword [ebp + 0x1c94]
sar esi, cl
imul esi, dword [esp + 0x3c]
movsx esi, byte [ebx + esi]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x50]
sar esi, cl
mov ecx, dword [esp + 0x3c]
imul ecx, esi
movsx ecx, byte [ebx + ecx]
mov ebx, dword [esp + 0x64]
lea ecx, [ebx + ecx + 1]
sar ecx, 1
mov dword [esp + 0x4c], ecx
cmp edx, 2
je 0x6c49d146
xor esi, esi
mov ebx, dword [esp + 0x78]
cmp dword [esp + 0x80], edi
cmovg ebx, dword [esp + 0x88]
xor ecx, ecx
cmp eax, 2
je 0x6c49d292
xor eax, eax
cmp edx, 2
mov dword [esp + 0xa8], ecx
je 0x6c49d240
mov ebx, dword [ebp + 0xa0]
mov edx, edi
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0x54]
shr edx, 0x1f
mov ecx, dword [esp + 0x48]
mov esi, dword [esp + 0x60]
mov eax, dword [ebx + eax*4 + 0x20]
mov ecx, dword [ecx + 0x38]
imul esi, eax
mov dword [esp + 0x4c], eax
lea eax, [edx + edi]
sar eax, 1
shl eax, cl
add esi, eax
mov eax, dword [esp + 0x54]
add esi, dword [ebx + eax*4]
mov eax, dword [esp + 0x70]
test eax, eax
je 0x6c49d1d0
mov ebx, dword [esp + 0x48]
test dl, dl
mov ebx, dword [ebx + 0x331c]
mov dword [esp + 0x8c], ebx
jne 0x6c49d1b0
cmp byte [esp + 0x6c], 0
jne 0x6c49d1b0
movzx ecx, byte [esp + 0x8c]
mov ebx, edi
mov eax, dword [esp + 0x48]
sar ebx, cl
mov eax, dword [eax + 0x334c]
mov dword [esp + 0x64], ebx
mov ebx, 2
cmp dword [esp + 0x64], eax
mov dword [esp + 0x74], eax
jge 0x6c49ced1
mov eax, dword [esp + 0x58]
sar eax, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x68], eax
cmp eax, dword [ecx + 0x3350]
jge 0x6c49ced1
mov eax, dword [esp + 0x74]
imul eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x64]
add ebx, dword [ebp + 0x1cb8]
movzx ebx, byte [ebx + eax]
mov byte [esp + 0xa4], bl
mov ebx, dword [esp + 0x44]
shr ebx, 0x1f
test bl, bl
mov byte [esp + 0x94], bl
jne 0x6c49d1a0
cmp byte [esp + 0x6c], 0
jne 0x6c49d1a0
mov ebx, dword [esp + 0x44]
movzx ecx, byte [esp + 0x8c]
mov eax, dword [esp + 0x48]
mov byte [esp + 0x98], 2
sar ebx, cl
mov dword [esp + 0x64], ebx
mov ebx, dword [eax + 0x334c]
cmp dword [esp + 0x64], ebx
jge 0x6c49cf51
mov eax, dword [esp + 0x58]
sar eax, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x74], eax
cmp eax, dword [ecx + 0x3350]
jge 0x6c49cf51
imul ebx, eax
mov ecx, dword [esp + 0x64]
add ecx, dword [ebp + 0x1cb8]
movzx ecx, byte [ecx + ebx]
mov byte [esp + 0x98], cl
mov eax, dword [esp + 0x50]
movzx ebx, byte [esp + 0x98]
shr eax, 0x1f
test dl, dl
mov byte [esp + 0xa5], bl
mov byte [esp + 0x98], al
jne 0x6c49d196
test al, al
jne 0x6c49d196
mov eax, dword [esp + 0x48]
mov ebx, edi
mov edx, 2
movzx ecx, byte [esp + 0x8c]
mov eax, dword [eax + 0x334c]
sar ebx, cl
cmp ebx, eax
mov dword [esp + 0x68], eax
jge 0x6c49cfd0
mov eax, dword [esp + 0x50]
sar eax, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x74], eax
cmp eax, dword [ecx + 0x3350]
jge 0x6c49cfd0
mov edx, dword [esp + 0x68]
mov ecx, dword [ebp + 0x1cb8]
imul edx, eax
add ecx, ebx
movzx edx, byte [ecx + edx]
lea esi, [esi]
cmp byte [esp + 0x94], 0
mov byte [esp + 0xa6], dl
jne 0x6c49d1c0
cmp byte [esp + 0x98], 0
jne 0x6c49d1c0
mov ebx, dword [esp + 0x44]
movzx ecx, byte [esp + 0x8c]
mov eax, dword [esp + 0x48]
sar ebx, cl
mov dword [esp + 0x68], ebx
mov ebx, dword [eax + 0x334c]
mov eax, 2
cmp dword [esp + 0x68], ebx
jge 0x6c49d041
mov edx, dword [esp + 0x50]
sar edx, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x64], edx
cmp edx, dword [ecx + 0x3350]
jge 0x6c49d041
imul ebx, edx
mov edx, dword [esp + 0x68]
add edx, dword [ebp + 0x1cb8]
movzx eax, byte [edx + ebx]
mov edx, dword [esp + 0x4c]
lea ebx, [esp + 0xa6]
mov byte [esp + 0xa7], al
lea eax, [esp + 0xa4]
mov dword [esp + 0xc], eax
lea eax, [esp + 0xa8]
mov dword [esp + 0x10], ebx
mov dword [esp + 8], eax
mov dword [esp + 4], edx
mov dword [esp], esi
call dword [ebp + 0x17a8]
add edi, 0x10
add dword [esp + 0x44], 0x10
cmp dword [esp + 0x5c], edi
jle 0x6c49d214
test edi, edi
js 0x6c49d110
mov eax, dword [esp + 0x5c]
sub eax, 8
cmp eax, edi
jg 0x6c49d0e1
mov eax, dword [esp + 0x50]
xor ecx, ecx
imul eax, dword [ebp + 0x16b0]
mov edx, dword [ebp + 0x1c9c]
add eax, edi
sar eax, 2
movzx eax, byte [edx + eax]
xor edx, edx
cmp eax, 2
je 0x6c49cd75
test cl, cl
je 0x6c49d07a
mov ebx, dword [ebp + 0xb4]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], ebx
jmp 0x6c49cdd4
mov edx, dword [esp + 0x50]
imul edx, dword [ebp + 0x16b0]
mov ecx, dword [ebp + 0x1c9c]
lea eax, [edx + edi]
add edx, dword [esp + 0x44]
sar eax, 2
movzx eax, byte [ecx + eax]
sar edx, 2
movzx edx, byte [ecx + edx]
cmp edx, 2
sete cl
jmp 0x6c49d0bd
mov eax, dword [esp + 0x50]
imul eax, dword [ebp + 0x16b0]
add eax, dword [esp + 0x44]
mov edx, dword [ebp + 0x1c9c]
sar eax, 2
cmp byte [edx + eax], 2
jne 0x6c49d07a
mov edx, dword [ebp + 0xb4]
xor eax, eax
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], edx
mov esi, dword [esp + 0x48]
mov edx, dword [esp + 0x44]
mov ebx, dword [esi + 0x333c]
mov ecx, dword [esi + 0x3308]
mov esi, dword [esp + 0x50]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x58]
sar edx, cl
sar esi, cl
add edx, dword [ebp + 0x1c94]
sar ebx, cl
mov ecx, dword [esp + 0x2c]
imul ebx, dword [esp + 0x2c]
imul ecx, esi
movsx ebx, byte [edx + ebx]
movsx edx, byte [edx + ecx]
lea esi, [ebx + edx + 1]
mov edx, 2
sar esi, 1
jmp 0x6c49cddf
mov edx, 2
jmp 0x6c49cfd0
mov byte [esp + 0x98], 2
jmp 0x6c49cf51
mov ebx, 2
jmp 0x6c49ced1
mov eax, 2
jmp 0x6c49d041
lea eax, [esp + 0xa8]
add edi, 0x10
mov dword [esp + 8], eax
mov eax, dword [esp + 0x4c]
lea ecx, [esp + 0xa6]
lea ebx, [esp + 0xa4]
mov dword [esp + 0x10], ecx
mov dword [esp + 0xc], ebx
mov dword [esp + 4], eax
mov dword [esp], esi
call dword [ebp + 0x1798]
add dword [esp + 0x44], 0x10
cmp dword [esp + 0x5c], edi
jg 0x6c49d08c
mov ebx, ebp
mov eax, dword [esp + 0x58]
mov edx, dword [esp + 0x58]
add eax, 0x10
add edx, 0x11
cmp edx, dword [esp + 0x90]
jge 0x6c49d358
mov dword [esp + 0x58], eax
jmp 0x6c49cd34
cmp dword [esp + 0x54], 1
mov eax, dword [ebp + 0xb8]
je 0x6c49d2e5
mov edx, dword [eax + 0x20]
add edx, esi
mov eax, 2
js 0x6c49d270
cmp edx, 0x39
mov al, 0x35
jg 0x6c49d270
cmp edx, 0x1d
lea eax, [edx + 2]
jg 0x6c49d330
add eax, dword [esp + 0x78]
mov edx, 0x35
cmp eax, 0x35
cmovle edx, eax
xor eax, eax
test edx, edx
cmovns eax, edx
movzx eax, byte [eax + 0x6c57ee80]
jmp 0x6c49ce0f
cmp dword [esp + 0x54], 1
mov eax, dword [ebp + 0xb8]
je 0x6c49d2e0
mov ecx, dword [eax + 0x20]
add ecx, dword [esp + 0x4c]
mov eax, 2
js 0x6c49d2c0
cmp ecx, 0x39
mov al, 0x35
jg 0x6c49d2c0
cmp ecx, 0x1d
lea eax, [ecx + 2]
jg 0x6c49d344
add ebx, eax
mov ecx, 0x35
cmp ebx, 0x35
cmovle ecx, ebx
xor eax, eax
test ecx, ecx
cmovns eax, ecx
movzx ecx, byte [eax + 0x6c57ee80]
jmp 0x6c49cdfd
mov ecx, dword [eax + 0x1c]
jmp 0x6c49d2a2
mov edx, dword [eax + 0x1c]
jmp 0x6c49d254
mov edx, dword [edx + 0x1c]
jmp 0x6c49cbf9
mov eax, dword [eax + 0x1c]
jmp 0x6c49cb97
cmp edx, 0x2b
jg 0x6c49d390
mov ecx, dword [edx*4 + 0x6c57ee48]
add ecx, 2
jmp 0x6c49cc25
cmp eax, 0x2b
jg 0x6c49d3a8
mov ecx, dword [eax*4 + 0x6c57ee48]
add ecx, 2
jmp 0x6c49cbc3
cmp edx, 0x2b
jg 0x6c49d3a0
mov eax, dword [edx*4 + 0x6c57ee48]
add eax, 2
jmp 0x6c49d270
cmp ecx, 0x2b
jg 0x6c49d398
mov eax, dword [ecx*4 + 0x6c57ee48]
add eax, 2
jmp 0x6c49d2c0
mov edi, ebx
add dword [esp + 0x54], 1
cmp dword [esp + 0x54], 3
je 0x6c49d372
mov esi, dword [esp + 0x84]
jmp 0x6c49cd13
add esp, 0xcc
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, dword [esp + 0x80]
sub edx, 8
mov dword [esp + 0x7c], edx
jmp 0x6c49ccea
lea ecx, [edx - 4]
jmp 0x6c49cc25
lea eax, [ecx - 4]
jmp 0x6c49d2c0
lea eax, [edx - 4]
jmp 0x6c49d270
lea ecx, [eax - 4]
jmp 0x6c49cbc3