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

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
and esp, 0xfffffff8
sub esp, 0xa8
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 0x2c]
mov dword [esp + 0x94], 0
test eax, eax
je 0x6c998a55
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.6c9df2b0
test eax, eax
jne 0x6c998a70
mov eax, dword [ebp + 8]
xor esi, esi
mov eax, dword [eax + 4]
movzx edx, byte [eax + 8]
cmp dl, 0x20
jne 0x6c998a55
mov edx, dword [eax + 0x18]
test edx, edx
je 0x6c998a55
mov dword [esp + 0x1c], edx
mov edx, dword [eax + 0x14]
fld dword [0x6ca30478]
fld qword [ebp + 0x38]
mov dword [esp + 0x18], edx
mov edx, dword [eax + 0x10]
fmul st(1)
mov dword [esp + 0x14], edx
mov eax, dword [eax + 0xc]
mov dword [esp + 0xc], 0x20
mov dword [esp + 0x10], eax
lea eax, [edi + 2]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x28]
fstp qword [esp + 0x70]
fmul qword [ebp + 0x30]
mov dword [esp + 4], eax
mov dword [esp], 0
fstp qword [esp + 0x78]
call fcn.6c9e0ca0
mov dword [esp + 0x6c], eax
test eax, eax
je 0x6c998a55
mov dword [eax + 0xc], edi
lea eax, [esp + 0x90]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.6c9df510
cmp esi, 1
je 0x6c99975c
mov eax, dword [esp + 0x90]
test eax, eax
je 0x6c998bc0
cmp eax, 4
je 0x6c9996d0
mov dword [esp + 4], eax
mov eax, dword [esp + 0x6c]
mov dword [esp], eax
call fcn.6c9df460
mov eax, dword [ebp + 8]
test byte [eax], 2
jne 0x6c998f30
fnstcw word [esp + 0x8e]
fld dword [0x6ca30468]
fdivr qword [ebp + 0xc]
movzx eax, word [esp + 0x8e]
or ah, 0xc
mov word [esp + 0x8c], ax
mov eax, dword [esp + 0x6c]
mov edi, dword [eax + 8]
mov ebx, dword [eax + 0x14]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x64], edi
mov dword [esp + 0x80], eax
fldcw word [esp + 0x8c]
fist dword [esp + 0x84]
fldcw word [esp + 0x8e]
fild dword [esp + 0x84]
fxch st(1)
fucompi st(1)
fstp st(0)
jp 0x6c998c11
jne 0x6c998c11
mov eax, dword [esp + 0x84]
mov ecx, dword [esp + 0x84]
sar eax, 0x1f
shr eax, 0x1e
add ecx, eax
and ecx, 3
sub ecx, eax
js 0x6c998f40
test esi, esi
jne 0x6c998f4b
mov eax, edi
mov edi, dword [esp + 0x80]
mov edx, 4
shl eax, 2
sub edi, eax
mov eax, dword [ebp + 8]
mov dword [esp + 0x70], edi
mov esi, dword [eax + 0x14]
lea eax, [esp + 0xa4]
mov dword [esp + 0x14], eax
lea eax, [esp + 0xa0]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x9c]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x98]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x20]
mov dword [esp], eax
mov eax, dword [ebp + 8]
call fcn.6c997cf0
mov eax, dword [esp + 0xa0]
test eax, eax
jns 0x6c998973
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
lea esi, [esi + eax*4 - 4]
mov eax, dword [esp + 0xa4]
test eax, eax
jns 0x6c998997
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x84], eax
sub eax, 1
imul eax, dword [edi + 0x10]
add esi, eax
mov edi, dword [esp + 0x6c]
mov eax, dword [edi + 0xc]
mov dword [esp + 0x78], eax
test eax, eax
jle 0x6c998a39
mov dword [esp + 0x84], 0
mov eax, dword [edi + 8]
mov dword [esp + 0x80], eax
nop
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x98]
shl eax, 2
cmp edi, 4
je 0x6c998be0
add eax, ebx
cmp eax, ebx
je 0x6c998a19
mov dword [esp + 0x68], ebx
mov edx, ebx
mov ecx, esi
lea esi, [esi]
nop
mov ebx, dword [ecx]
add edx, 4
add ecx, edi
mov dword [edx - 4], ebx
cmp eax, edx
jne 0x6c9989f0
mov ebx, dword [esp + 0x68]
mov edx, 0xfffffffc
sub edx, ebx
add eax, edx
shr eax, 2
add eax, 1
imul edi, eax
lea ebx, [ebx + eax*4]
add esi, edi
add dword [esp + 0x84], 1
add esi, dword [esp + 0x9c]
add ebx, dword [esp + 0x70]
mov eax, dword [esp + 0x84]
cmp eax, dword [esp + 0x78]
jl 0x6c9989c0
mov eax, dword [ebp + 8]
test byte [eax], 2
je 0x6c998a5d
mov dword [esp], eax
call fcn.6c9e01c0
mov eax, dword [esp + 0x6c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
mov dword [esp + 0x6c], 0
mov eax, dword [esp + 0x6c]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
lea eax, [esp + 0x94]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.6c9df2d0
test eax, eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 4]
movzx edx, byte [eax + 8]
jne 0x6c998bd5
mov esi, 1
cmp dl, 8
jne 0x6c9987a7
lea eax, [edi + 2]
mov dword [esp + 0x1c], 0
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x28]
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 8
mov dword [esp + 4], eax
mov dword [esp], 0
call fcn.6c9e0ca0
mov edx, eax
mov dword [esp + 0x6c], eax
test eax, eax
je 0x6c998a55
mov eax, dword [ebp + 8]
mov edx, dword [edx + 4]
mov eax, dword [eax + 4]
mov esi, dword [edx + 4]
mov eax, dword [eax + 4]
mov ebx, dword [eax]
test ebx, ebx
jle 0x6c998b36
mov eax, dword [eax + 4]
mov edx, dword [esi + 4]
mov dword [esp + 0x84], ebx
lea ecx, [eax + ebx*4]
lea esi, [esi]
nop
mov ebx, dword [eax]
add eax, 4
add edx, 4
mov dword [edx - 4], ebx
cmp ecx, eax
jne 0x6c998b20
mov ebx, dword [esp + 0x84]
fld dword [0x6ca30478]
fld qword [ebp + 0x38]
mov dword [esi], ebx
mov esi, 1
mov eax, dword [esp + 0x6c]
fmul st(1)
mov dword [eax + 0xc], edi
lea eax, [esp + 0x90]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
fstp qword [esp + 0x70]
fmul qword [ebp + 0x30]
fstp qword [esp + 0x78]
call fcn.6c9df510
mov edi, dword [esp + 0x6c]
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 1
mov dword [esp + 8], eax
mov dword [esp], edi
call fcn.6c9df1a0
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 0
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.6c9d9460
mov eax, dword [esp + 0x90]
jmp 0x6c998852
mov dword [esp + 0x90], 1
mov eax, 1
jmp 0x6c998852
xor esi, esi
jmp 0x6c9987a7
mov dword [esp + 4], esi
mov dword [esp], ebx
mov dword [esp + 8], eax
call fcn.6c9a2290
mov edi, dword [esp + 0x6c]
mov eax, dword [edi + 8]
mov dword [esp + 0x80], eax
shl eax, 2
add esi, eax
add ebx, eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x78], eax
jmp 0x6c998a19
fld qword [esp + 0x78]
mov edi, dword [ebp + 8]
fldcw word [esp + 0x8c]
fistp dword [esp + 0x88]
fldcw word [esp + 0x8e]
mov edx, dword [ebp + 8]
mov edi, dword [edi + 8]
fld qword [esp + 0x70]
mov ecx, dword [esp + 0x88]
mov eax, edi
sub eax, dword [esp + 0x64]
shl eax, 0xf
mov dword [esp + 0x78], ecx
mov dword [esp + 0x5c], eax
mov eax, dword [edx + 0xc]
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x70], eax
mov edx, dword [edx + 0xc]
fldcw word [esp + 0x8c]
fistp dword [esp + 0x84]
fldcw word [esp + 0x8e]
sub eax, edx
mov dword [esp + 0x30], edx
mov edx, dword [ebp + 0x14]
shl eax, 0xf
mov dword [esp + 0x44], eax
mov eax, dword [ebp + 0x14]
shl edx, 0x10
imul eax, ecx
sub edx, eax
mov eax, dword [esp + 0x84]
imul eax, dword [ebp + 0x14]
mov dword [esp + 0x40], edx
mov edx, dword [ebp + 0x18]
shl edx, 0x10
sub edx, eax
mov dword [esp + 0x3c], edx
test esi, esi
je 0x6c9990a0
mov eax, dword [esp + 0x80]
mov esi, dword [esp + 0x30]
mov dword [esp + 0xa4], 0
mov edi, eax
imul esi, eax
mov eax, dword [ebp + 8]
sub edi, dword [esp + 0x64]
mov dword [esp + 0x54], edi
mov dword [esp], eax
call fcn.6c9df2b0
test eax, eax
jne 0x6c999741
movzx eax, byte [esp + 0xa4]
mov dword [esp + 8], esi
mov dword [esp], ebx
mov dword [esp + 4], eax
call fcn.6c9a2160
mov edi, dword [esp + 0x6c]
mov eax, dword [edi + 0xc]
mov dword [esp + 0x50], eax
test eax, eax
jle 0x6c998a39
mov eax, dword [edi + 8]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x68], 0
imul edx, dword [ebp + 0x18]
add edx, dword [esp + 0x40]
add edx, dword [esp + 0x5c]
mov edi, dword [ebp + 8]
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x78]
imul eax, dword [ebp + 0x18]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x3c]
sub edx, eax
add edx, dword [esp + 0x44]
mov dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x58]
mov eax, dword [esp + 0x60]
mov edx, dword [esp + 0x5c]
test ecx, ecx
jle 0x6c9991d3
mov esi, dword [edi + 8]
add ecx, ebx
mov dword [esp + 0x70], esi
mov esi, dword [ebp + 0x24]
test esi, esi
jne 0x6c998e60
mov esi, dword [ebp + 0x20]
mov dword [esp + 0x80], ecx
test esi, esi
je 0x6c998e20
mov ecx, dword [esp + 0x70]
mov dword [ebp + 8], edi
sub ecx, 1
mov dword [esp + 0x64], ecx
lea esi, [esi]
nop
mov ecx, eax
sar ecx, 0x10
cmp dword [esp + 0x70], ecx
jbe 0x6c998dd0
mov edi, dword [ebp + 8]
mov esi, edx
sar esi, 0x10
cmp esi, dword [edi + 0xc]
jae 0x6c998dd0
mov edi, dword [esp + 0x64]
sub edi, ecx
mov ecx, edi
mov edi, dword [ebp + 8]
imul esi, dword [edi + 0x10]
add ecx, dword [edi + 0x14]
movzx ecx, byte [ecx + esi]
mov byte [ebx], cl
add eax, dword [esp + 0x78]
add edx, dword [esp + 0x84]
add ebx, 1
cmp dword [esp + 0x80], ebx
jne 0x6c998da0
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0x84]
mov ebx, dword [esp + 0x80]
add dword [esp + 0x68], 1
add ebx, dword [esp + 0x54]
sub dword [esp + 0x60], ecx
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x78]
add dword [esp + 0x5c], ecx
cmp eax, dword [esp + 0x50]
jne 0x6c998d50
jmp 0x6c998a39
mov ecx, eax
sar ecx, 0x10
cmp dword [esp + 0x70], ecx
jbe 0x6c998e42
mov esi, edx
sar esi, 0x10
cmp esi, dword [edi + 0xc]
jae 0x6c998e42
imul esi, dword [edi + 0x10]
add ecx, dword [edi + 0x14]
movzx ecx, byte [ecx + esi]
mov byte [ebx], cl
add eax, dword [esp + 0x78]
add edx, dword [esp + 0x84]
add ebx, 1
cmp dword [esp + 0x80], ebx
jne 0x6c998e20
jmp 0x6c998dea
mov esi, dword [ebp + 0x20]
mov dword [esp + 0x80], ecx
test esi, esi
je 0x6c998ee0
mov ecx, dword [esp + 0x70]
mov dword [ebp + 8], edi
sub ecx, 1
mov dword [esp + 0x64], ecx
lea esi, [esi]
mov esi, eax
sar esi, 0x10
cmp esi, dword [esp + 0x70]
jae 0x6c998ebc
mov ecx, edx
sar ecx, 0x10
mov edi, ecx
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0xc]
cmp ecx, edi
jbe 0x6c998ebc
sub ecx, 1
sub ecx, edi
mov edi, dword [ebp + 8]
imul ecx, dword [edi + 0x10]
mov edi, dword [esp + 0x64]
sub edi, esi
mov esi, edi
mov edi, dword [ebp + 8]
add ecx, dword [edi + 0x14]
movzx ecx, byte [ecx + esi]
mov byte [ebx], cl
add eax, dword [esp + 0x78]
add edx, dword [esp + 0x84]
add ebx, 1
cmp ebx, dword [esp + 0x80]
jne 0x6c998e80
mov edi, dword [ebp + 8]
jmp 0x6c998dea
mov ecx, eax
sar ecx, 0x10
cmp dword [esp + 0x70], ecx
jbe 0x6c998f11
mov esi, edx
sar esi, 0x10
mov dword [esp + 0x64], esi
mov esi, dword [edi + 0xc]
cmp dword [esp + 0x64], esi
jae 0x6c998f11
sub esi, 1
sub esi, dword [esp + 0x64]
add ecx, dword [edi + 0x14]
imul esi, dword [edi + 0x10]
movzx ecx, byte [ecx + esi]
mov byte [ebx], cl
add eax, dword [esp + 0x78]
add edx, dword [esp + 0x84]
add ebx, 1
cmp dword [esp + 0x80], ebx
jne 0x6c998ee0
jmp 0x6c998dea
mov dword [esp], eax
call fcn.6c9e0170
jmp 0x6c99886e
add ecx, 4
test esi, esi
je 0x6c998900
mov eax, dword [esp + 0x80]
sub eax, dword [esp + 0x64]
mov edx, 1
mov dword [esp + 0x70], eax
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x14]
lea eax, [esp + 0xa4]
mov dword [esp + 0x14], eax
lea eax, [esp + 0xa0]
mov dword [esp + 0x10], eax
lea eax, [esp + 0x9c]
mov dword [esp + 0xc], eax
lea eax, [esp + 0x98]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x24]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x20]
mov dword [esp], eax
mov eax, dword [ebp + 8]
call fcn.6c997cf0
mov eax, dword [esp + 0xa0]
test eax, eax
jns 0x6c998fbb
mov eax, dword [ebp + 8]
mov eax, dword [eax + 8]
lea esi, [esi + eax - 1]
mov edi, dword [esp + 0xa4]
test edi, edi
jns 0x6c998fdf
mov eax, dword [ebp + 8]
mov edi, dword [ebp + 8]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x84], eax
sub eax, 1
imul eax, dword [edi + 0x10]
add esi, eax
mov edi, dword [esp + 0x6c]
mov eax, dword [edi + 0xc]
mov dword [esp + 0x80], eax
test eax, eax
jle 0x6c998a39
mov edx, dword [esp + 0x98]
mov edi, dword [edi + 8]
mov dword [esp + 0x84], 0
cmp edx, 1
je 0x6c999071
nop
lea ecx, [ebx + edi]
cmp ecx, ebx
je 0x6c9991e0
mov dword [esp + 0x78], edx
mov eax, esi
movzx edx, byte [eax]
add ebx, 1
add eax, dword [esp + 0x78]
mov byte [ebx - 1], dl
cmp ecx, ebx
jne 0x6c999021
mov edx, dword [esp + 0x78]
imul edx, edi
add esi, edx
mov eax, dword [esp + 0x70]
add dword [esp + 0x84], 1
add esi, dword [esp + 0x9c]
lea ebx, [ecx + eax]
mov eax, dword [esp + 0x84]
cmp eax, dword [esp + 0x80]
jge 0x6c998a39
mov edx, dword [esp + 0x98]
cmp edx, 1
jne 0x6c999010
mov dword [esp + 8], edi
mov dword [esp + 4], esi
mov dword [esp], ebx
call fcn.6c9a2290
mov eax, dword [esp + 0x6c]
mov edi, dword [eax + 8]
mov eax, dword [eax + 0xc]
add esi, edi
lea ecx, [ebx + edi]
mov dword [esp + 0x80], eax
jmp 0x6c99903b
lea eax, [edi - 1]
mov edx, dword [esp + 0x80]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x70]
sub eax, 1
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x64]
shl eax, 2
sub edx, eax
mov dword [esp + 0x48], eax
mov eax, dword [ebp + 0x1c]
mov dword [esp + 0x4c], edx
test eax, eax
jne 0x6c999241
mov eax, dword [esp + 0x30]
test eax, eax
jle 0x6c998a39
mov eax, ecx
imul eax, dword [ebp + 0x18]
mov edx, dword [esp + 0x84]
mov dword [esp + 0x58], 0
imul edx, dword [ebp + 0x18]
add edx, dword [esp + 0x40]
mov dword [esp + 0x80], edi
add edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x3c]
sub edx, eax
add edx, dword [esp + 0x44]
mov dword [esp + 0x50], edx
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
test ecx, ecx
jle 0x6c9991a0
mov edi, dword [ebp + 0x24]
xor ebx, ebx
test edi, edi
jne 0x6c999610
mov esi, dword [ebp + 0x20]
mov dword [esp + 0x64], ecx
test esi, esi
jne 0x6c9991f0
lea esi, [esi]
nop
mov esi, eax
sar esi, 0x10
cmp esi, dword [esp + 0x80]
jae 0x6c999180
mov edi, edx
sar edi, 0x10
cmp edi, dword [esp + 0x70]
jae 0x6c999180
mov ecx, dword [ebp + 8]
shl esi, 2
imul edi, dword [ecx + 0x10]
add esi, dword [ecx + 0x14]
mov esi, dword [esi + edi]
mov edi, dword [esp + 0x5c]
mov dword [edi + ebx*4], esi
add eax, dword [esp + 0x78]
add edx, dword [esp + 0x84]
add ebx, 1
cmp ebx, dword [esp + 0x64]
jne 0x6c999150
mov edi, dword [esp + 0x48]
add dword [esp + 0x5c], edi
mov ecx, dword [esp + 0x64]
mov ebx, dword [esp + 0x84]
mov edi, dword [esp + 0x4c]
add dword [esp + 0x58], 1
mov eax, dword [esp + 0x58]
sub dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x78]
add dword [esp + 0x5c], edi
add dword [esp + 0x50], ebx
cmp eax, dword [esp + 0x30]
jne 0x6c999123
jmp 0x6c998a39
mov dword [esp + 0x80], ebx
jmp 0x6c998dea
mov ecx, ebx
jmp 0x6c99903b
mov esi, eax
sar esi, 0x10
cmp esi, dword [esp + 0x80]
jae 0x6c999228
mov edi, edx
sar edi, 0x10
cmp edi, dword [esp + 0x70]
jae 0x6c999228
mov ecx, dword [esp + 0x60]
sub ecx, esi
mov esi, ecx
mov ecx, dword [ebp + 8]
shl esi, 2
imul edi, dword [ecx + 0x10]
add esi, dword [ecx + 0x14]
mov esi, dword [esi + edi]
mov edi, dword [esp + 0x5c]
mov dword [edi + ebx*4], esi
add eax, dword [esp + 0x78]
add edx, dword [esp + 0x84]
add ebx, 1
cmp ebx, dword [esp + 0x64]
jne 0x6c9991f0
jmp 0x6c999194
mov edi, dword [esp + 0x30]
test edi, edi
jle 0x6c998a39
mov esi, dword [esp + 0x64]
test esi, esi
jle 0x6c998a39
mov eax, ecx
mov edx, dword [esp + 0x84]
imul eax, dword [ebp + 0x18]
mov dword [esp + 0x2c], 0
imul edx, dword [ebp + 0x18]
add edx, dword [esp + 0x40]
add edx, dword [esp + 0x5c]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x3c]
sub edx, eax
mov eax, dword [esp + 0x48]
add edx, dword [esp + 0x44]
add eax, dword [esp + 0x4c]
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], eax
lea esi, [esi]
mov eax, dword [esp + 0x28]
xor edi, edi
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x70], eax
jmp 0x6c9992e3
mov ebx, dword [esp + 0x78]
add edi, 1
add dword [esp + 0x80], ebx
mov ebx, dword [esp + 0x84]
add dword [esp + 0x70], ebx
cmp edi, dword [esp + 0x64]
je 0x6c9995e0
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x80]
mov ebx, dword [ebp + 0x20]
mov eax, dword [esp + 0x70]
sar edx, 0x10
mov ecx, esi
sar eax, 0x10
sub ecx, edx
test ebx, ebx
mov ebx, dword [ebp + 0x24]
cmovne edx, ecx
mov ecx, dword [esp + 0x68]
sub ecx, eax
test ebx, ebx
mov ebx, edx
cmovne eax, ecx
not ebx
cmp esi, edx
setg cl
shr ebx, 0x1f
mov esi, eax
and ebx, ecx
not esi
mov ecx, esi
shr ecx, 0x1f
test bl, cl
je 0x6c9992c0
cmp dword [esp + 0x68], eax
jle 0x6c9992c0
mov ebx, dword [ebp + 8]
mov ecx, dword [ebx + 0x10]
imul eax, ecx
lea eax, [eax + edx*4]
add eax, dword [ebx + 0x14]
test ecx, ecx
movzx edx, byte [eax + 2]
movzx ebx, byte [eax + 1]
movzx esi, byte [eax]
mov byte [esp + 0x54], dl
movzx edx, byte [eax + 5]
mov byte [esp + 0x58], bl
movzx ebx, byte [eax + 3]
mov byte [esp + 0x48], dl
movzx edx, byte [eax + 7]
mov byte [esp + 0x50], bl
movzx ebx, byte [eax + 4]
mov byte [esp + 0x40], dl
lea edx, [ecx + 3]
cmovs ecx, edx
mov byte [esp + 0x4c], bl
movzx ebx, byte [eax + 6]
sar ecx, 2
mov byte [esp + 0x44], bl
lea edx, [eax + ecx*4 + 4]
movzx eax, byte [edx + 1]
movzx ecx, byte [edx - 4]
movzx ebx, byte [edx]
mov byte [esp + 0x3c], al
movzx eax, byte [edx + 2]
mov byte [esp + 0x3a], cl
movzx ecx, byte [edx - 3]
mov byte [esp + 0x3b], al
movzx eax, byte [edx + 3]
mov byte [esp + 0x39], cl
movzx ecx, byte [edx - 2]
movzx edx, byte [edx - 1]
mov byte [esp + 0x38], al
mov byte [esp + 0x37], cl
mov byte [esp + 0x36], dl
cmp dword [ebp + 0x20], 0
je 0x6c999440
mov byte [esp + 0x38], dl
movzx edx, byte [esp + 0x39]
mov byte [esp + 0x36], al
movzx eax, byte [esp + 0x3b]
mov byte [esp + 0x3b], cl
movzx ecx, byte [esp + 0x3c]
mov byte [esp + 0x3c], dl
movzx edx, byte [esp + 0x3a]
mov byte [esp + 0x3a], bl
mov ebx, edx
movzx edx, byte [esp + 0x50]
mov byte [esp + 0x39], cl
movzx ecx, byte [esp + 0x40]
mov byte [esp + 0x37], al
mov byte [esp + 0x40], dl
movzx edx, byte [esp + 0x54]
mov byte [esp + 0x50], cl
movzx ecx, byte [esp + 0x44]
mov byte [esp + 0x44], dl
movzx edx, byte [esp + 0x58]
mov byte [esp + 0x54], cl
movzx ecx, byte [esp + 0x48]
mov byte [esp + 0x48], dl
mov edx, esi
movzx esi, byte [esp + 0x4c]
mov byte [esp + 0x58], cl
mov byte [esp + 0x4c], dl
mov eax, dword [ebp + 0x24]
test eax, eax
je 0x6c9994cd
movzx edx, byte [esp + 0x40]
movzx eax, byte [esp + 0x38]
mov byte [esp + 0x38], dl
movzx edx, byte [esp + 0x44]
mov byte [esp + 0x40], al
movzx eax, byte [esp + 0x3b]
mov byte [esp + 0x3b], dl
movzx edx, byte [esp + 0x48]
mov byte [esp + 0x44], al
movzx eax, byte [esp + 0x3c]
mov byte [esp + 0x3c], dl
movzx edx, byte [esp + 0x4c]
mov byte [esp + 0x4c], bl
mov ebx, edx
movzx edx, byte [esp + 0x50]
mov byte [esp + 0x48], al
movzx eax, byte [esp + 0x36]
mov byte [esp + 0x36], dl
movzx edx, byte [esp + 0x54]
mov byte [esp + 0x50], al
movzx eax, byte [esp + 0x37]
mov byte [esp + 0x37], dl
movzx edx, byte [esp + 0x58]
mov byte [esp + 0x54], al
movzx eax, byte [esp + 0x39]
mov byte [esp + 0x39], dl
mov edx, esi
movzx esi, byte [esp + 0x3a]
mov byte [esp + 0x58], al
mov byte [esp + 0x3a], dl
mov eax, esi
movzx edx, byte [esp + 0x4c]
movzx ecx, word [esp + 0x80]
movzx esi, al
movzx eax, bl
movzx ebx, word [esp + 0x70]
sub edx, esi
imul edx, ecx
sar edx, 0x10
add edx, esi
movzx esi, byte [esp + 0x3a]
sub eax, esi
imul eax, ecx
sar eax, 0x10
add eax, esi
movzx esi, dl
movzx eax, al
sub eax, esi
movzx esi, byte [esp + 0x39]
imul eax, ebx
sar eax, 0x10
add eax, edx
mov edx, dword [esp + 0x5c]
mov byte [edx + edi*4], al
movzx eax, byte [esp + 0x58]
movzx edx, byte [esp + 0x48]
sub edx, eax
imul edx, ecx
sar edx, 0x10
add edx, eax
movzx eax, byte [esp + 0x3c]
sub eax, esi
imul eax, ecx
sar eax, 0x10
add eax, esi
movzx esi, dl
movzx eax, al
sub eax, esi
movzx esi, byte [esp + 0x37]
imul eax, ebx
sar eax, 0x10
add edx, eax
mov eax, dword [esp + 0x5c]
mov byte [eax + edi*4 + 1], dl
movzx eax, byte [esp + 0x54]
movzx edx, byte [esp + 0x44]
sub edx, eax
imul edx, ecx
sar edx, 0x10
add edx, eax
movzx eax, byte [esp + 0x3b]
sub eax, esi
imul eax, ecx
sar eax, 0x10
add eax, esi
movzx esi, dl
movzx eax, al
sub eax, esi
movzx esi, byte [esp + 0x36]
imul eax, ebx
sar eax, 0x10
add edx, eax
mov eax, dword [esp + 0x5c]
mov byte [eax + edi*4 + 2], dl
movzx eax, byte [esp + 0x50]
movzx edx, byte [esp + 0x40]
sub edx, eax
imul edx, ecx
sar edx, 0x10
add edx, eax
movzx eax, byte [esp + 0x38]
sub eax, esi
imul eax, ecx
sar eax, 0x10
add eax, esi
movzx esi, al
movzx eax, dl
sub esi, eax
mov eax, dword [esp + 0x5c]
imul esi, ebx
sar esi, 0x10
add edx, esi
mov byte [eax + edi*4 + 3], dl
jmp 0x6c9992c0
mov edi, dword [esp + 0x20]
add dword [esp + 0x2c], 1
sub dword [esp + 0x28], ebx
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x78]
add dword [esp + 0x5c], edi
add dword [esp + 0x24], ebx
cmp eax, dword [esp + 0x30]
jne 0x6c9992a0
jmp 0x6c998a39
mov esi, dword [ebp + 0x20]
mov dword [esp + 0x64], ecx
test esi, esi
jne 0x6c999671
lea esi, [esi]
nop
mov esi, eax
sar esi, 0x10
cmp esi, dword [esp + 0x80]
jae 0x6c999658
mov edi, edx
sar edi, 0x10
cmp edi, dword [esp + 0x70]
jae 0x6c999658
mov ecx, dword [esp + 0x68]
shl esi, 2
sub ecx, edi
mov edi, ecx
mov ecx, dword [ebp + 8]
imul edi, dword [ecx + 0x10]
add esi, dword [ecx + 0x14]
mov esi, dword [esi + edi]
mov edi, dword [esp + 0x5c]
mov dword [edi + ebx*4], esi
add eax, dword [esp + 0x78]
add edx, dword [esp + 0x84]
add ebx, 1
cmp ebx, dword [esp + 0x64]
jne 0x6c999620
jmp 0x6c999194
mov esi, eax
sar esi, 0x10
cmp esi, dword [esp + 0x80]
jae 0x6c9996b4
mov edi, edx
sar edi, 0x10
cmp dword [esp + 0x70], edi
jbe 0x6c9996b4
mov ecx, dword [esp + 0x68]
sub ecx, edi
mov edi, ecx
mov ecx, dword [ebp + 8]
imul edi, dword [ecx + 0x10]
mov ecx, dword [esp + 0x60]
sub ecx, esi
mov esi, ecx
mov ecx, dword [ebp + 8]
shl esi, 2
add esi, dword [ecx + 0x14]
mov esi, dword [esi + edi]
mov edi, dword [esp + 0x5c]
mov dword [edi + ebx*4], esi
add eax, dword [esp + 0x78]
add edx, dword [esp + 0x84]
add ebx, 1
cmp ebx, dword [esp + 0x64]
jne 0x6c999671
jmp 0x6c999194
mov edi, dword [esp + 0x6c]
mov dword [esp + 0x10], 0
mov dword [esp + 0xc], 0xff
mov dword [esp + 8], 0xff
mov dword [esp + 4], 0xff
mov eax, dword [edi + 4]
mov dword [esp], eax
call fcn.6c9dc7f0
mov dword [esp + 4], 0
mov dword [esp + 8], eax
mov dword [esp], edi
mov dword [esp + 0x94], eax
call fcn.6c9d9460
mov eax, dword [esp + 0x94]
mov dword [esp + 4], 1
mov dword [esp], edi
mov dword [esp + 8], eax
call fcn.6c9df1a0
mov eax, dword [esp + 0x90]
jmp 0x6c998852
lea eax, [esp + 0xa4]
mov dword [esp + 4], eax
mov eax, dword [ebp + 8]
mov dword [esp], eax
call fcn.6c9df2d0
jmp 0x6c998ce6
xor esi, esi
jmp 0x6c998b70