Function at 0x100c9521
Capabilities:
Encrypt data using rc4 ksa
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
mov eax, 0x8820
call fcn.1015e8d0
mov eax, dword [0x101db764]
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 0xc]
xor eax, ebp
mov dword [esp + 0x8818], eax
mov eax, dword [ecx + 0x6424]
mov edi, dword [ecx + 0x641c]
imul ebx, eax, 0x87d0
test eax, eax
lea edx, [edi + ebx]
je 0x100c956b
mov dword [esp + 0x30], 0
jmp 0x100c9579
cmp dword [ecx + 0x7378], 0
sete al
mov dword [esp + 0x30], eax
mov eax, dword [esi + 0x28]
mov dword [esp + 0x14], edx
mov dword [edi + ebx + 0x14], eax
movsd xmm0, qword [esi + 0x18]
movsd xmm1, qword [esi + 0x20]
movsd qword [edi + ebx + 0xc], xmm1
movsd qword [edi + ebx + 4], xmm0
cmp dword [ecx + 0x641c], edx
jne 0x100c95af
cmp dword [ecx + 0x7378], 0
je 0x100c97d4
mov dword [esp + 0x28], 0
lea esi, [edi + ebx + 4]
mov ecx, esi
call fcn.100c2907
mov dword [esi + 0x552c], eax
mov dword [esp + 0xc], ebx
mov dword [esp + 8], edi
mov ebx, dword [esi + 8]
mov ecx, dword [esi]
mov edi, dword [esi + 0x10]
mov eax, ebx
mov dword [esp + 0x20], ecx
shr eax, 3
push dword [ecx + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
mov dword [esp + 0x10], edi
mov dword [esp + 0x24], esi
and cl, 7
shl eax, cl
shr eax, 0x17
movzx ecx, byte [eax + 0x10187580]
movzx eax, byte [eax + 0x10187780]
add ecx, ebx
cmp edi, ecx
cmovbe ecx, edi
cmp eax, 9
mov dword [esi + 8], ecx
ja 0x100c9663
mov esi, ecx
xor edx, edx
cmp al, 4
lea ecx, [eax - 5]
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0xc]
cmovbe ecx, eax
seta dl
movzx ecx, byte [ecx + 0x101bf524]
mov dword [edi + ebx + 0x34c], edx
mov edx, edi
mov eax, ecx
mov dword [edi + ebx + 0x344], ecx
and eax, 3
mov dword [edi + ebx + 0x348], eax
cmp eax, 1
mov eax, dword [ebp + 0xc]
je 0x100c9680
cmp dword [eax + 0x2c], 5
jne 0x100c9680
mov edi, 0xbebbb1b7
mov ecx, dword [esp + 0x8818]
xor ecx, ebp
call fcn.1015e65c
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [esp + 0xc]
mov ebx, esi
mov edi, edx
mov dword [esp + 0x1c], ecx
lea eax, [edx + eax + 0xc]
mov dword [esp + 0x18], eax
mov eax, esi
mov esi, dword [esp + 0x20]
shr eax, 3
push dword [esi + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100c97ec
shr eax, 0x17
mov edx, dword [ebp + 8]
movzx ecx, byte [eax + 0x10187580]
movzx eax, byte [eax + 0x10187780]
add ebx, ecx
mov ecx, dword [esp + 0x10]
cmp ecx, ebx
cmovbe ebx, ecx
mov ecx, dword [esp + 0x18]
mov dword [ecx], ebx
mov ecx, dword [esp + 0xc]
mov dword [edi + ecx + 0x6c80], eax
mov ecx, ebx
mov eax, dword [edx + eax*4 + 0x6a2c]
test eax, eax
je 0x100c9663
mov eax, dword [eax + 4]
mov dword [esp + 0x34], eax
mov eax, dword [eax]
mov eax, dword [edx + eax*4 + 0x69ac]
test eax, eax
je 0x100c9663
mov eax, dword [eax + 4]
mov ebx, dword [eax + 0x14]
mov dword [esp + 0x2c], eax
mov eax, ecx
shr eax, 3
push dword [esi + eax]
mov esi, ecx
call fcn.101688a0
add esp, 4
mov edx, ebx
mov ecx, esi
add ebx, esi
and cl, 7
neg dl
shl eax, cl
mov ecx, edx
shr eax, cl
mov ecx, dword [esp + 0x10]
cmp ecx, ebx
cmovbe ebx, ecx
mov ecx, dword [esp + 0x18]
cmp byte [esp + 0x28], 0
mov dword [ecx], ebx
mov ecx, dword [esp + 0xc]
mov dword [edi + ecx + 0x87ac], eax
jne 0x100c9770
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x6e54], eax
jne 0x100c9663
mov edx, dword [esp + 8]
mov esi, dword [esp + 0xc]
xor ecx, ecx
mov dword [esp + 0x28], 3
mov dword [edx + esi + 0x5548], ecx
mov esi, dword [esp + 0x2c]
cmp dword [esi + 0x40], ecx
je 0x100c9957
mov esi, dword [esp + 8]
mov edi, dword [esp + 0xc]
mov edx, dword [esp + 0x28]
xor ecx, ecx
cmp edx, 3
mov dword [esi + edi + 0x5540], edx
mov edx, dword [ebp + 0xc]
setne cl
mov dword [esi + edi + 0x5544], ecx
jne 0x100c9856
mov ecx, dword [esp + 0x2c]
mov dword [esi + edi + 0x87c0], eax
mov ecx, dword [ecx + 0x14]
jmp 0x100c9869
cmp dword [ecx + 0x7394], 0
mov al, 1
mov dword [esp + 0x28], eax
je 0x100c95b7
call fcn.1016a210
mov ecx, eax
mov esi, dword [esp + 0x10]
or ecx, 1
bsr edx, ecx
lea edi, [edx + edx]
lea ecx, [edx + edx - 0x1f]
xor edi, 0x3f
add edi, ebx
cmp esi, edi
cmovbe edi, esi
shr eax, cl
cmp edx, 0x12
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x18]
mov dword [esp + 0x2c], edi
lea ecx, [edx + ecx + 0x6c80]
mov edx, dword [ebp + 8]
mov dword [esi], edi
ja 0x100c9837
mov dword [ecx], 0xbebbb1b7
jmp 0x100c9663
dec eax
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 8]
mov dword [ecx], eax
mov ecx, dword [esp + 0x2c]
cmp eax, 0xff
ja 0x100c9663
jmp 0x100c96ec
mov ecx, dword [esp + 0x2c]
lea eax, [eax + eax + 1]
mov dword [esi + edi + 0x87c0], eax
mov ecx, dword [ecx + 0x14]
inc ecx
xor eax, eax
inc eax
shl eax, cl
mov dword [esi + edi + 0x87c4], eax
cmp dword [edx + 0x2c], 5
jne 0x100c9884
mov ecx, dword [esp + 0x24]
call fcn.100c2907
lea eax, [esi + edi + 0x14]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x18]
test eax, eax
jne 0x100c9a3e
mov eax, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
mov eax, dword [eax + 0x1c]
mov ebx, dword [edi]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
mov eax, dword [esp + 0x24]
mov ecx, dword [eax]
mov eax, ebx
shr eax, 3
mov dword [esp + 0x1c], ecx
push dword [ecx + eax]
call fcn.101688a0
add esp, 4
mov edx, dword [esp + 0x10]
mov ecx, ebx
and cl, 7
shl eax, cl
add ebx, edx
neg dl
mov ecx, edx
mov edx, dword [esp + 0xc]
shr eax, cl
cmp esi, ebx
cmovbe ebx, esi
cmp dword [esp + 0x28], 3
mov dword [edi], ebx
mov edi, dword [esp + 8]
mov dword [edi + edx + 0x87b0], eax
jne 0x100c9a37
mov eax, dword [esp + 0x34]
cmp dword [eax + 8], 1
jne 0x100c9a37
mov edi, dword [esp + 0x1c]
mov eax, ebx
shr eax, 3
push dword [edi + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100c99ce
shr eax, 0x17
mov edx, dword [esp + 0x18]
movzx ecx, byte [eax + 0x10187580]
movsx eax, byte [eax + 0x10187980]
add ebx, ecx
cmp esi, ebx
cmovbe ebx, esi
mov dword [edx], ebx
jmp 0x100c9a28
cmp byte [esp + 0x1c], 3
jne 0x100c9971
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx + 0x48]
test ecx, ecx
jne 0x100c9971
xor edi, edi
dec edi
jmp 0x100c9668
mov esi, dword [esp + 0x20]
mov edi, ebx
mov ecx, ebx
xor edx, edx
shr edi, 3
and cl, 7
cmp ebx, dword [esp + 0x10]
mov ch, byte [esi + edi]
mov edi, dword [esp + 0x18]
setl dl
add edx, ebx
shl ch, cl
mov dword [edi], edx
test ch, ch
jns 0x100c9796
mov ecx, edx
mov edi, dword [esp + 0x18]
shr ecx, 3
movzx esi, byte [esi + ecx]
mov ecx, edx
and cl, 7
shl esi, cl
xor ecx, ecx
shr esi, 7
and esi, 1
cmp edx, dword [esp + 0x10]
setl cl
inc esi
add ecx, edx
mov dword [esp + 0x28], esi
mov dword [edi], ecx
jmp 0x100c9796
or eax, 1
bsr eax, eax
mov dword [esp + 0x10], eax
xor eax, 0x1f
add eax, ebx
cmp esi, eax
cmovbe eax, esi
mov dword [esp + 0x38], eax
shr eax, 3
push dword [edi + eax]
call fcn.101688a0
add esp, 4
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x38]
mov edx, 0x20
mov edi, dword [esp + 0x18]
sub edx, ebx
add edx, ecx
and cl, 7
shl eax, cl
mov ecx, ebx
shr eax, cl
cmp esi, edx
cmovbe edx, esi
mov esi, eax
shr eax, 1
and esi, 1
mov dword [edi], edx
mov edx, esi
neg edx
xor eax, edx
add eax, esi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov dword [ecx + edx + 0x87b4], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x18]
cmp eax, 1
jne 0x100c9bd2
mov eax, dword [esp + 0x2c]
cmp dword [eax + 0x20], 0
jne 0x100c9bd2
mov eax, dword [esp + 0x18]
mov ebx, dword [eax]
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
mov eax, dword [esp + 0x24]
mov edi, dword [eax]
mov eax, ebx
shr eax, 3
push dword [edi + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
mov dword [esp + 0x10], edi
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100c9aa7
shr eax, 0x17
mov edx, dword [esp + 0x18]
movzx ecx, byte [eax + 0x10187580]
movsx eax, byte [eax + 0x10187980]
add ebx, ecx
cmp esi, ebx
cmovbe ebx, esi
jmp 0x100c9afd
or eax, 1
bsr ecx, eax
mov dword [esp + 0x1c], ecx
xor ecx, 0x1f
add ecx, ebx
cmp esi, ecx
cmovbe ecx, esi
mov eax, ecx
mov ebx, ecx
shr eax, 3
push dword [edi + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
mov edx, ebx
mov ebx, 0x20
and cl, 7
shl eax, cl
mov ecx, dword [esp + 0x1c]
sub ebx, ecx
shr eax, cl
add ebx, edx
mov ecx, eax
cmp esi, ebx
cmovbe ebx, esi
and ecx, 1
shr eax, 1
mov edx, ecx
neg edx
xor eax, edx
mov edx, dword [esp + 0x18]
add eax, ecx
mov dword [edx], ebx
cmp dword [esp + 0x28], 3
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov dword [ecx + edx + 0x87b8], eax
jne 0x100c9bd2
mov eax, dword [esp + 0x34]
cmp dword [eax + 8], 1
jne 0x100c9bd2
mov edi, dword [esp + 0x10]
mov eax, ebx
shr eax, 3
push dword [edi + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100c9b69
shr eax, 0x17
mov edx, dword [esp + 0x18]
movzx ecx, byte [eax + 0x10187580]
movsx eax, byte [eax + 0x10187980]
add ebx, ecx
cmp esi, ebx
cmovbe ebx, esi
mov dword [edx], ebx
jmp 0x100c9bc3
or eax, 1
bsr eax, eax
mov dword [esp + 0x1c], eax
xor eax, 0x1f
add eax, ebx
cmp esi, eax
cmovbe eax, esi
mov dword [esp + 0x38], eax
shr eax, 3
push dword [edi + eax]
call fcn.101688a0
add esp, 4
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x38]
mov edx, 0x20
mov edi, dword [esp + 0x18]
sub edx, ebx
add edx, ecx
and cl, 7
shl eax, cl
mov ecx, ebx
shr eax, cl
cmp esi, edx
cmovbe edx, esi
mov esi, eax
shr eax, 1
and esi, 1
mov dword [edi], edx
mov edx, esi
neg edx
xor eax, edx
add eax, esi
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov dword [ecx + edx + 0x87bc], eax
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0xc]
mov ecx, dword [esp + 0x34]
xor eax, eax
lea edx, [edi + ebx + 0x348]
mov dword [edx + 0x5204], eax
mov dword [esp + 0x10], edx
cmp dword [ecx + 0x3c], eax
mov eax, dword [esp + 0x18]
je 0x100c9c83
mov ebx, dword [eax]
mov edi, eax
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
mov eax, dword [esp + 0x24]
mov ecx, ebx
shr ecx, 3
mov eax, dword [eax]
push dword [eax + ecx]
call fcn.101688a0
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100c9c48
shr eax, 0x17
movzx ecx, byte [eax + 0x10187580]
add ebx, ecx
movzx ecx, byte [eax + 0x10187780]
cmp esi, ebx
cmovbe ebx, esi
mov dword [edi], ebx
jmp 0x100c9c71
mov ecx, eax
or ecx, 1
bsr edx, ecx
lea ecx, [edx + edx]
xor ecx, 0x3f
add ecx, ebx
cmp esi, ecx
cmovbe ecx, esi
mov dword [edi], ecx
lea ecx, [edx + edx - 0x1f]
shr eax, cl
mov ecx, 0xbebbb1b7
dec eax
cmp edx, 0x13
cmovae ecx, eax
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0xc]
mov dword [edx + 0x5204], ecx
mov edx, dword [edx]
cmp edx, 3
jne 0x100c9cce
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x24]
mov dword [esp + 0x1c], edx
mov edx, dword [eax]
mov ecx, dword [ecx]
mov eax, dword [esp + 0x20]
mov esi, edx
shr esi, 3
movzx esi, byte [ecx + esi]
mov ecx, edx
and cl, 7
shl esi, cl
xor ecx, ecx
shr esi, 7
and esi, 1
cmp edx, dword [eax]
mov eax, dword [esp + 0x18]
setl cl
add ecx, edx
mov edx, dword [esp + 0x1c]
mov dword [eax], ecx
mov dword [edi + ebx + 0x5554], esi
mov esi, dword [ebp + 8]
lea eax, [edi + ebx + 0x5b6c]
lea ecx, [edi + ebx + 0x5b74]
push dword [esi + 4]
push dword [esp + 0x2c]
push edx
push dword [esp + 0x40]
push dword [esp + 0x34]
mov dword [esp + 0x4c], eax
push eax
push ecx
call fcn.100c0c0e
add esp, 0x1c
mov ebx, dword [ebp + 0xc]
test eax, eax
js 0x100cb2d7
mov eax, dword [esp + 0x10]
lea edx, [esi + 4]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x1c], edx
cmp dword [eax], 1
je 0x100c9d33
push dword [edx]
push esi
call fcn.100c637b
mov edx, dword [esp + 0x24]
add esp, 8
test eax, eax
js 0x100c9faa
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0xc]
xor eax, eax
mov dword [ecx + edi + 0x370], eax
mov dword [ecx + edi + 0x384], eax
mov dword [ecx + edi + 0x380], eax
mov dword [ecx + edi + 0x38c], eax
mov dword [ecx + edi + 0x388], eax
mov edi, dword [esp + 0x34]
cmp dword [edi + 0x1c], eax
je 0x100c9d77
mov ecx, dword [esp + 0x10]
mov eax, 2
cmp dword [ecx], 2
je 0x100c9d8f
mov eax, dword [esp + 0x34]
cmp dword [eax + 0x20], 1
jne 0x100c9dc6
mov ecx, dword [esp + 0x10]
mov eax, 3
cmp dword [ecx], 3
jne 0x100c9dc6
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0xc]
lea ecx, [ecx + edi + 0x370]
push dword [edx]
push dword [esp + 0x2c]
push ecx
push eax
push dword [esp + 0x48]
push dword [esp + 0x40]
push dword [esp + 0x3c]
call fcn.100c0484
mov edx, dword [esp + 0x38]
add esp, 0x1c
test eax, eax
js 0x100cb2d7
mov ecx, dword [esp + 8]
mov edi, dword [esp + 0xc]
xor eax, eax
mov dword [ecx + edi + 0x87a8], eax
cmp dword [ebx + 0x40], eax
je 0x100c9e03
push dword [edx]
push ebx
push dword [esp + 0x2c]
push esi
call fcn.100c6de4
mov ecx, dword [esp + 0x2c]
add esp, 0x10
test eax, eax
jns 0x100c9e03
mov eax, dword [ecx]
test byte [eax + 0x244], 8
jne 0x100c9663
mov eax, dword [esp + 0x10]
cmp dword [eax], 1
je 0x100c9e71
mov eax, dword [esp + 0x34]
cmp dword [eax + 4], 0
je 0x100c9e71
mov eax, dword [esp + 0x20]
mov edi, dword [esp + 0x18]
mov esi, dword [eax]
mov eax, dword [esp + 0x24]
mov ebx, dword [edi]
mov eax, dword [eax]
mov ecx, ebx
shr ecx, 3
push dword [eax + ecx]
call fcn.101688a0
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
shr eax, 0x17
movzx ecx, byte [eax + 0x10187580]
movzx eax, byte [eax + 0x10187780]
add ecx, ebx
cmp esi, ecx
cmovbe ecx, esi
cmp eax, 2
mov dword [edi], ecx
ja 0x100c9663
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov dword [ecx + edx + 0x8488], eax
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 8]
mov dword [ecx + eax + 0x360], 0
mov eax, dword [esp + 0x34]
mov eax, dword [eax + 0x24]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x18]
mov ebx, dword [eax]
mov eax, dword [esp + 0x20]
mov esi, dword [eax]
mov eax, dword [esp + 0x24]
mov edi, dword [eax]
mov eax, ebx
shr eax, 3
push dword [edi + eax]
call fcn.101688a0
mov edx, ebx
add esp, 4
mov ecx, edx
mov dword [esp + 0x3c], esi
mov dword [esp + 0x20], edi
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100c9ee7
shr eax, 0x17
movzx ecx, byte [eax + 0x10187580]
movsx eax, byte [eax + 0x10187980]
add edx, ecx
cmp esi, edx
cmovbe edx, esi
mov esi, dword [esp + 0x18]
jmp 0x100c9f3b
or eax, 1
bsr ebx, eax
mov dword [esp + 0x24], ebx
xor ebx, 0x1f
add ebx, edx
cmp esi, ebx
cmovbe ebx, esi
mov eax, ebx
shr eax, 3
push dword [edi + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
mov edi, 0x20
and cl, 7
shl eax, cl
mov ecx, dword [esp + 0x24]
sub edi, ecx
shr eax, cl
add edi, ebx
mov ecx, eax
cmp esi, edi
cmovbe edi, esi
and ecx, 1
mov esi, dword [esp + 0x18]
shr eax, 1
mov edx, ecx
neg edx
xor eax, edx
mov edx, edi
add eax, ecx
mov dword [esi], edx
mov ecx, dword [esp + 0x2c]
add eax, dword [esp + 0x28]
mov ecx, dword [ecx + 0x4a0]
lea ecx, [ecx + ecx*2]
lea ecx, [ecx + ecx + 3]
cmp eax, ecx
ja 0x100c9663
mov ebx, edx
mov ecx, dword [esp + 0xc]
mov edx, dword [esp + 8]
mov esi, dword [esp + 0x34]
lea ecx, [edx + ecx + 0x344]
mov dword [ecx + 0xc], eax
movzx edx, byte [esi + eax + 0x224]
mov dword [ecx + 0x10], edx
movzx eax, byte [esi + eax + 0x27c]
mov dword [ecx + 0x14], eax
mov eax, dword [ecx]
cmp eax, 6
jne 0x100c9fc8
mov edi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x18]
xor eax, eax
mov esi, dword [esp + 0x14]
mov edx, ebx
cmp ebx, edi
setl al
add edx, eax
mov dword [ecx], edx
jmp 0x100c9fda
mov ecx, dword [esp + 0x38]
mov esi, dword [esp + 8]
mov edx, dword [esp + 0xc]
mov edi, eax
xor eax, eax
mov dword [ecx], eax
mov dword [esi + edx + 0x5b70], eax
jmp 0x100c9668
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x3c]
add eax, 0xfffffffb
mov edx, ebx
cmp eax, 1
ja 0x100ca032
mov ecx, dword [esp + 0x20]
mov eax, edx
shr eax, 3
push dword [ecx + eax]
mov ebx, edx
call fcn.101688a0
mov edx, ebx
add esp, 4
mov ecx, edx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100ca00e
shr eax, 0x17
movzx eax, byte [eax + 0x10187580]
add edx, eax
jmp 0x100ca027
or eax, 1
bsr eax, eax
xor eax, 0x1f
mov ecx, eax
add eax, edx
or ecx, 0xffffffe0
cmp edi, eax
cmovbe eax, edi
lea edx, [eax + ecx + 0x21]
mov eax, dword [esp + 0x18]
cmp edi, edx
cmovbe edx, edi
mov dword [eax], edx
mov ecx, dword [esp + 0xc]
mov ebx, dword [esp + 8]
xor eax, eax
mov dword [ebx + ecx + 0x364], 1
mov dword [ebx + ecx + 0x368], eax
mov dword [ebx + ecx + 0x36c], eax
mov ebx, dword [esp + 0x34]
cmp dword [ebx + 0x34], eax
je 0x100ca238
mov ecx, dword [esp + 0x20]
mov eax, edx
shr eax, 3
push dword [ecx + eax]
mov ebx, edx
call fcn.101688a0
add esp, 4
mov ecx, ebx
mov edx, ebx
and cl, 7
shl eax, cl
mov ecx, dword [esp + 0x18]
shr eax, 0x17
movzx ebx, byte [eax + 0x10187580]
movzx eax, byte [eax + 0x10187780]
add ebx, edx
cmp edi, ebx
cmovbe ebx, edi
cmp eax, 2
mov dword [ecx], ebx
ja 0x100c9663
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
lea ecx, [ecx + edx + 0x364]
xor edx, edx
cmp al, 2
setne dl
xor edx, eax
mov dword [ecx], edx
je 0x100ca238
mov esi, dword [esp + 0x20]
mov eax, ebx
shr eax, 3
push dword [esi + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100ca10c
shr eax, 0x17
mov edx, dword [esp + 0x18]
movzx ecx, byte [eax + 0x10187580]
add ebx, ecx
cmp edi, ebx
cmovbe ebx, edi
mov dword [edx], ebx
mov edx, esi
movsx esi, byte [eax + 0x10187980]
jmp 0x100ca168
or eax, 1
bsr ecx, eax
mov dword [esp + 0x24], ecx
xor ecx, 0x1f
add ecx, ebx
cmp edi, ecx
cmovbe ecx, edi
mov eax, ecx
mov ebx, ecx
shr eax, 3
push dword [esi + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
mov edx, esi
mov esi, eax
mov eax, ebx
mov ebx, 0x20
and cl, 7
shl esi, cl
mov ecx, dword [esp + 0x24]
sub ebx, ecx
shr esi, cl
add ebx, eax
mov eax, esi
cmp edi, ebx
cmovbe ebx, edi
and eax, 1
shr esi, 1
mov ecx, eax
neg ecx
xor esi, ecx
mov ecx, dword [esp + 0x18]
add esi, eax
mov dword [ecx], ebx
mov eax, ebx
shr eax, 3
push dword [edx + eax]
call fcn.101688a0
add esp, 4
mov ecx, ebx
and cl, 7
shl eax, cl
cmp eax, 0x8000000
jb 0x100ca1a6
shr eax, 0x17
mov edx, dword [esp + 0x18]
movzx ecx, byte [eax + 0x10187580]
movsx eax, byte [eax + 0x10187980]
add ebx, ecx
cmp edi, ebx
cmovbe ebx, edi
mov dword [edx], ebx
jmp 0x100ca204
or eax, 1
mov ecx, dword [esp + 0x20]
bsr eax, eax
mov dword [esp + 0x24], eax
xor eax, 0x1f
add eax, ebx
cmp edi, eax
cmovbe eax, edi
mov dword [esp + 0x28], eax
shr eax, 3
push dword [ecx + eax]
call fcn.101688a0
add esp, 4
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
mov edx, 0x20
sub edx, ebx
add edx, ecx
and cl, 7
shl eax, cl
mov ecx, ebx
mov ebx, dword [esp + 0x18]
shr eax, cl
cmp edi, edx
cmovbe edx, edi
mov edi, eax
shr eax, 1
and edi, 1
mov dword [ebx], edx
mov edx, edi
neg edx
xor eax, edx
add eax, edi
mov edx, dword [esp + 8]
mov edi, dword [esp + 0xc]
lea ecx, [esi + 6]
cmp ecx, 0xc
ja 0x100c9663
lea ecx, [eax + 6]
cmp ecx, 0xc
ja 0x100c9663
lea ecx, [edx + edi + 0x368]
add esi, esi
add eax, eax
mov dword [ecx], esi
mov esi, dword [esp + 0x14]
mov dword [ecx + 4], eax
mov eax, dword [esp + 0x10]
cmp dword [eax + 0x5204], 0
jle 0x100ca261
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
xor edi, edi
mov dword [eax + ecx + 0x5b70], edi
mov ecx, dword [esp + 0x38]
mov dword [ecx], edi
jmp 0x100c9668
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
lea eax, [eax + ecx + 0x5530]
mov ecx, dword [ebp + 8]
mov eax, dword [eax]
test eax, eax
je 0x100ca286
cmp dword [ecx + 0x7378], 0
jne 0x100ca42d
cmp dword [ecx + 0x7394], 0
jne 0x100c9663
test eax, eax
jne 0x100ca420
cmp dword [ecx + 0x7378], 0
je 0x100ca3c5
cmp dword [ecx + 0x6424], 0
je 0x100ca31f
push dword [ebp + 8]
call fcn.100cbe41
add esp, 4
test eax, eax
jns 0x100ca2d5
mov edi, eax
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
test byte [eax + 0x244], 8
jne 0x100c9668
mov ebx, dword [ebp + 8]
mov edi, 0x87d0
lea eax, [esp + 0x40]
mov esi, dword [ebx + 0x641c]
push edi
push esi
push eax
call fcn.101613e0
add esp, 0xc
push edi
mov edi, dword [esp + 0x18]
push edi
push esi
call fcn.101613e0
add esp, 0xc
mov eax, 0x87d0
push eax
lea eax, [esp + 0x44]
push eax
push edi
call fcn.101613e0
add esp, 0xc
mov eax, dword [ebx + 0x641c]
mov dword [esp + 0x14], eax
mov eax, dword [ebp + 8]
cmp dword [eax + 0x5ef8], 0
je 0x100c9663
mov eax, dword [ebp + 8]
mov ecx, eax
lea esi, [eax + 0x6710]
mov eax, dword [eax + 0x6710]
cmp dword [ecx + 0x670c], 3
jne 0x100cadf9
test eax, eax
jne 0x100c9663
mov eax, dword [ebp + 8]
cmp dword [eax + 0x6994], 5
jne 0x100c9663
xor eax, eax
inc eax
push eax
mov ebx, dword [ebp + 8]
push dword [ebx + 0x641c]
push ebx
call fcn.100c2c86
add esp, 0xc
mov edi, eax
mov eax, dword [ebx + 0x5ef8]
xor ecx, ecx
mov edx, 0x7fffffff
add eax, 4
push ecx
push edx
push eax
call fcn.1001c039
add esp, 0xc
mov eax, dword [ebx + 0x5ef8]
add eax, 4
xor ecx, ecx
inc ecx
push ecx
mov ecx, 0x7fffffff
push ecx
push eax
call fcn.1001c039
add esp, 0xc
xor eax, eax
test edi, edi
mov dword [ebx + 0x5ef8], eax
jns 0x100ca3cb
jmp 0x100c9668
lea esi, [ecx + 0x6710]
cmp dword [esi], 0
je 0x100ca3d5
mov ecx, dword [ebp + 8]
jmp 0x100ca41c
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x5ef8]
test eax, eax
je 0x100ca40f
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x6454], 0
jne 0x100ca40f
mov edx, dword [ebp + 8]
xor ecx, ecx
cmp dword [edx + 0x670c], 2
sete cl
add eax, 4
push ecx
push 0x7fffffff
push eax
call fcn.1001c039
add esp, 0xc
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x5ef8], 0
mov esi, dword [esp + 0x14]
cmp dword [ecx + 0x7378], 0
je 0x100ca7ad
xor eax, eax
cmp byte [esp + 0x30], 0
mov edi, dword [ebp + 8]
mov dword [esp + 0x14], esi
je 0x100ca49a
test al, al
je 0x100ca4e5
cmp byte [esp + 0x30], 0
je 0x100ca6e1
lea eax, [edi + 0x6e2c]
push eax
call fcn.1004e62a
add esp, 4
mov dword [edi + 0x6e34], 0
mov eax, dword [esi + 0x6c80]
push dword [edi + eax*4 + 0x6a2c]
call fcn.1004e5fc
add esp, 4
test eax, eax
mov dword [edi + 0x6e2c], eax
je 0x100ca837
mov eax, dword [eax + 4]
mov dword [edi + 0x6e34], eax
jmp 0x100ca6e7
mov ecx, dword [esi + 0x6c80]
mov esi, dword [edi + 0x6e34]
mov ecx, dword [edi + ecx*4 + 0x6a2c]
mov edx, dword [ecx + 4]
mov ecx, dword [esi]
cmp ecx, dword [edx]
jne 0x100c9663
mov esi, dword [esi + 0x40]
cmp esi, dword [edx + 0x40]
jne 0x100c9663
mov edx, dword [edi + 0x6e38]
mov ecx, dword [edi + ecx*4 + 0x69ac]
mov esi, dword [esp + 0x14]
cmp edx, dword [ecx + 4]
jne 0x100c9663
jmp 0x100ca43d
mov eax, dword [edi + 0x670c]
cmp eax, dword [esi + 0x5540]
jne 0x100c9663
mov ecx, dword [ebp + 0xc]
xor eax, eax
cmp dword [ecx + 0x40], 0
sete al
cmp dword [edi + 0x6454], eax
jne 0x100c9663
cmp dword [edi + 0x5ef8], 0
je 0x100c9663
mov eax, dword [ebp + 8]
lea eax, [eax + 0x6470]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
cmp dword [eax], 0
je 0x100ca53f
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x2c], 5
jne 0x100c9663
mov eax, dword [esp + 0x14]
mov edx, dword [ebp + 8]
mov cl, 1
mov ebx, dword [eax + 0x5530]
cmp dword [edx + 0x6708], 0
jne 0x100ca564
mov eax, dword [ebp + 8]
cmp dword [eax + 0x670c], 3
setne cl
mov eax, ebx
shl eax, cl
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x698c]
cmp ebx, ecx
jae 0x100c9663
mov esi, dword [esp + 0x14]
cmp eax, ecx
mov edi, 0xbebbb1b7
jae 0x100c9668
mov ecx, dword [ebp + 8]
xor edx, edx
mov eax, ebx
mov edi, esi
div dword [ecx + 0x6984]
mov esi, ecx
mov eax, ebx
mov dword [edi + 0x551c], edx
mov dword [edi + 0x5528], edx
xor edx, edx
div dword [ecx + 0x6984]
cmp dword [esi + 0x6708], 0
mov cl, 1
jne 0x100ca5c9
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x670c], 3
setne cl
mov esi, dword [esp + 0x14]
mov edx, dword [ebp + 8]
shl eax, cl
mov dword [esi + 0x5520], eax
mov dword [esi + 0x552c], eax
cmp dword [edx + 0x670c], 2
jne 0x100ca5f8
mov ecx, dword [esp + 0x14]
inc eax
mov dword [ecx + 0x5520], eax
mov dword [ecx + 0x552c], eax
push dword [esp + 0x14]
push dword [ebp + 8]
call fcn.100c5974
add esp, 8
test eax, eax
js 0x100cb2d7
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x6e34]
cmp dword [eax + 0x20], 2
jne 0x100ca66a
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x348], 3
jne 0x100ca693
mov esi, dword [ebp + 8]
mov edx, dword [esp + 0x14]
mov ecx, esi
push 0xffffffffffffffff
call fcn.100ce01c
add esp, 4
cmp dword [esi + 0x6708], 0
je 0x100ca66a
mov esi, dword [ebp + 8]
mov edi, dword [esp + 0x14]
mov ecx, esi
mov edx, edi
push 0
call fcn.100ce01c
add esp, 4
mov ecx, esi
mov edx, edi
push 1
call fcn.100ce01c
add esp, 4
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x348], 3
jne 0x100ca693
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x5554], 0
jne 0x100ca693
push dword [esp + 0x14]
push dword [ebp + 8]
call fcn.100a5ba8
add esp, 8
mov eax, dword [ebp + 8]
cmp dword [eax + 0x7394], 0
jne 0x100ca6ae
push dword [esp + 0x14]
push dword [ebp + 8]
call fcn.100a5d55
add esp, 8
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
mov eax, dword [eax + 0x2d4]
cmp eax, 0x2f
jg 0x100cb597
cmp eax, 0x20
jl 0x100cb553
mov eax, dword [ebp + 8]
cmp dword [eax + 0x6994], 5
je 0x100cb558
jmp 0x100cb597
mov eax, dword [edi + 0x6e34]
mov eax, dword [eax]
mov edx, dword [edi + 0x6e38]
mov eax, dword [edi + eax*4 + 0x69ac]
cmp edx, dword [eax + 4]
je 0x100ca841
lea eax, [edi + 0x6e30]
push eax
call fcn.1004e62a
add esp, 4
mov dword [edi + 0x6e38], 0
mov eax, dword [edi + 0x6e34]
mov eax, dword [eax]
push dword [edi + eax*4 + 0x69ac]
call fcn.1004e5fc
add esp, 4
test eax, eax
mov dword [edi + 0x6e30], eax
je 0x100ca837
mov edx, dword [eax + 4]
mov dword [edi + 0x6e38], edx
mov eax, dword [edi + 0x6984]
cmp eax, dword [edx + 0x38]
jne 0x100ca77d
mov eax, dword [edi + 0x6980]
cmp eax, dword [edx + 0x3c]
jne 0x100ca77d
mov eax, dword [edi + 0x739c]
cmp eax, dword [edx + 0x4a0]
jne 0x100ca77d
mov ecx, dword [edi + 0x7398]
mov dword [esp + 8], 0
cmp ecx, dword [edx + 0xc]
je 0x100ca78a
mov eax, dword [edx + 0x4a0]
xor ecx, ecx
inc ecx
mov dword [esp + 8], ecx
cmp dword [edi + 0x69a4], eax
jne 0x100ca7a1
mov eax, dword [edi + 0x69a8]
cmp eax, dword [edx + 0xc]
je 0x100ca849
xor eax, eax
inc eax
mov dword [esp + 8], eax
jmp 0x100ca849
cmp esi, dword [ecx + 0x641c]
jne 0x100c97e7
cmp dword [ecx + 0x6710], 0
mov ebx, esi
mov al, 1
jne 0x100ca830
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx]
mov ecx, dword [ecx + 0x2dc]
cmp ecx, 8
jl 0x100ca830
mov edx, dword [ebp + 8]
xor edi, edi
cmp dword [edx + 0x6990], 0
je 0x100c9668
cmp ecx, 0x10
jl 0x100ca830
mov edx, dword [ebx + 0x348]
cmp edx, 3
je 0x100c9668
cmp ecx, 0x18
jl 0x100ca830
cmp edx, 1
jne 0x100c9668
cmp ecx, 0x20
jl 0x100ca830
mov edx, dword [ebp + 8]
cmp dword [edx + 0x6994], 5
jne 0x100cb968
cmp ecx, 0x2f
mov esi, ebx
jg 0x100c9668
jmp 0x100ca42f
mov esi, ebx
jmp 0x100ca42f
mov edi, 0xfffffff4
jmp 0x100c9668
mov dword [esp + 8], 0
cmp dword [edi + 0x645c], 0
mov dword [esp + 0xc], edx
je 0x100ca8c7
mov eax, dword [esp + 0x1c]
mov ecx, dword [edx + 0x38]
mov eax, dword [eax]
mov edx, ecx
shl edx, 4
xor edi, edi
inc edi
mov dword [esp + 0x10], edi
cmp edx, dword [eax + 0x64]
jne 0x100ca8d5
mov edx, dword [esp + 0xc]
mov edx, dword [edx + 0x3c]
mov edi, edx
shl edi, 4
cmp edi, dword [eax + 0x68]
jne 0x100ca8d5
mov edi, dword [ebp + 8]
mov esi, dword [esp + 0xc]
mov edi, dword [edi + 0x739c]
cmp edi, dword [esi + 0x4a0]
jne 0x100ca8d5
mov edi, dword [ebp + 8]
mov esi, dword [esp + 0xc]
mov edi, dword [edi + 0x7398]
cmp edi, dword [esi + 0xc]
jne 0x100ca8d5
mov edi, dword [ebp + 8]
cmp dword [edi + 0x6984], ecx
jne 0x100ca8d5
mov ecx, dword [ebp + 8]
xor ebx, ebx
cmp dword [ecx + 0x6980], edx
setne bl
mov dword [esp + 0x10], ebx
jmp 0x100ca8d5
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x10], 0
mov eax, dword [eax]
mov eax, dword [eax + 0x70]
cmp eax, 0xc
jg 0x100ca8eb
cmp eax, 0xffffffff
je 0x100ca922
xor edi, edi
cmp eax, 0xc
je 0x100ca905
jmp 0x100ca903
cmp eax, 0xe
je 0x100ca8fc
cmp eax, 0xd
jne 0x100ca903
mov edi, 4
jmp 0x100ca905
mov edi, 5
jmp 0x100ca905
mov edi, eax
mov ecx, dword [ebp + 8]
xor edx, edx
call fcn.100cde41
lea ecx, [eax - 0xc]
cmp ecx, 2
ja 0x100ca91e
mov eax, dword [eax*4 + 0x101bf4e8]
cmp edi, eax
je 0x100ca929
xor eax, eax
inc eax
mov dword [esp + 0x10], eax
cmp byte [esp + 0x30], 0
je 0x100ca9a4
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 0xc]
mov eax, dword [eax]
mov ecx, dword [edi + 0x64]
mov edi, dword [edi + 0x68]
mov esi, dword [eax + 0xbc]
mov eax, dword [eax + 0xc0]
mov dword [esp + 0x24], ecx
mov dword [esp + 0x30], eax
imul ecx
mov dword [esp + 0x28], esi
mov ebx, eax
mov eax, esi
mov ecx, edx
imul edi
xor edx, ecx
xor eax, ebx
xor ecx, ecx
inc ecx
or eax, edx
mov dword [esp + 0x20], ecx
jne 0x100ca9ac
mov ebx, dword [ebp + 8]
test edi, edi
je 0x100ca97f
cmp dword [esp + 0x30], 0
jne 0x100ca99a
cmp dword [esp + 0x24], 0
je 0x100ca9ac
cmp dword [esp + 0x28], 0
je 0x100ca9ac
mov eax, dword [esp + 0x28]
mov ebx, dword [ebp + 8]
xor eax, dword [esp + 0x24]
js 0x100ca9af
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], eax
jmp 0x100ca9af
mov eax, dword [esp + 0x10]
mov dword [esp + 0x20], eax
mov ebx, dword [ebp + 8]
cmp dword [ebx + 0x7394], 0
jne 0x100cabc2
mov esi, dword [esp + 0xc]
push esi
call fcn.100c12e3
add esp, 4
mov ecx, dword [ebx + 4]
mov dword [ecx + 0x2cc], eax
mov eax, dword [esi + 8]
mov ecx, dword [ebx + 4]
mov dword [ecx + 0x2d0], eax
mov eax, dword [esi + 0x30]
mov ecx, dword [ebx + 4]
mov dword [ecx + 0x12c], eax
mov eax, dword [esi + 0x38]
mov dword [ebx + 0x6984], eax
mov edi, dword [esi + 0x3c]
mov ecx, edi
mov dword [ebx + 0x6980], edi
imul ecx, eax
mov dword [ebx + 0x698c], ecx
lea ecx, [eax + 1]
mov dword [ebx + 0x6988], ecx
lea ecx, [eax*4]
mov dword [ebx + 0x6700], ecx
xor ecx, ecx
cmp dword [esi + 0xc], 2
setl cl
shl eax, 4
shl edi, 4
mov dword [ebx + 0x6450], ecx
mov dword [ebx + 0x6444], eax
mov dword [ebx + 0x6448], edi
mov ecx, dword [ebx + 0x6e38]
mov edx, dword [ecx + 0x50]
mov ebx, dword [ecx + 0x54]
mov dword [esp + 0x28], ebx
mov dword [esp + 0x10], edx
lea ebx, [edx + ebx]
mov edx, eax
sub edx, ebx
jbe 0x100c97e7
mov ebx, dword [ecx + 0x58]
mov ecx, dword [ecx + 0x5c]
mov dword [esp + 0x24], ebx
lea ebx, [ecx + ebx]
mov dword [esp + 0x30], ecx
cmp edi, ebx
jbe 0x100c97e7
mov ecx, edi
sub ecx, ebx
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x73e0]
test ebx, ebx
mov dword [esp + 0x18], ebx
jle 0x100caaf2
mov ebx, dword [esp + 0x24]
or ebx, dword [esp + 0x10]
jne 0x100caaf2
mov ebx, dword [ebp + 8]
mov ebx, dword [ebx + 0x73e4]
test ebx, ebx
mov dword [esp + 0x2c], ebx
jle 0x100caaf2
mov ebx, dword [esp + 0x18]
lea esi, [ebx + 0xf]
lea ebx, [edx + 0xf]
xor esi, ebx
mov ebx, 0xf
cmp esi, ebx
ja 0x100caaf2
cmp dword [esp + 0x2c], ecx
jg 0x100caaf2
cmp dword [esp + 0x18], edx
jg 0x100caaf2
mov ebx, dword [esp + 0x2c]
lea esi, [ebx + 0xf]
lea ebx, [ecx + 0xf]
xor esi, ebx
cmp esi, 0xf
ja 0x100caaf2
mov edx, dword [esp + 0x18]
mov ecx, eax
sub ecx, edx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x2c]
sub edi, ecx
mov dword [esp + 0x30], edi
jmp 0x100cab03
mov ebx, dword [ebp + 8]
xor edi, edi
mov dword [ebx + 0x73e0], edi
mov dword [ebx + 0x73e4], edi
mov edi, dword [ebp + 8]
mov ebx, edi
mov edi, dword [edi + 4]
mov dword [edi + 0x64], eax
mov eax, dword [ebx + 0x6448]
mov edi, dword [ebx + 4]
mov dword [edi + 0x68], eax
mov eax, dword [ebx + 4]
mov dword [eax + 0x5c], edx
mov edx, dword [esp + 0x10]
mov eax, dword [ebx + 4]
mov dword [eax + 0x60], ecx
mov ecx, dword [esp + 0x28]
mov dword [ebx + 0x6478], ecx
mov ecx, dword [esp + 0x24]
mov dword [ebx + 0x6474], edx
mov edx, dword [esp + 0x30]
mov dword [ebx + 0x647c], ecx
mov ecx, dword [esp + 0xc]
mov dword [ebx + 0x6480], edx
cmp dword [ecx + 0x6c], 0
je 0x100cabbf
mov esi, dword [esp + 0xc]
mov edx, dword [esp + 0x1c]
xor eax, eax
xor ecx, ecx
cmp dword [esi + 0x70], eax
mov edx, dword [edx]
setg cl
inc ecx
mov dword [edx + 0x148], ecx
cmp dword [esi + 0x74], eax
je 0x100cabbf
mov edi, dword [esp + 0x1c]
mov esi, dword [esp + 0xc]
xor edx, edx
mov ebx, dword [ebp + 8]
inc edx
mov eax, dword [edi]
mov ecx, dword [eax + 0x144]
cmp ecx, dword [esi + 0x80]
mov ecx, dword [esi + 0x78]
mov dword [eax + 0x13c], ecx
mov eax, dword [esi + 0x7c]
mov ecx, dword [edi]
mov dword [ecx + 0x140], eax
mov eax, dword [esi + 0x80]
mov ecx, dword [edi]
mov dword [ecx + 0x144], eax
mov ecx, dword [esp + 8]
cmovne ecx, edx
jmp 0x100cabc6
mov ebx, dword [ebp + 8]
mov ecx, dword [esp + 8]
mov eax, dword [ebx + 0x645c]
or ecx, dword [esp + 0x20]
mov esi, dword [esp + 0x14]
jne 0x100cad85
test eax, eax
je 0x100cad85
mov eax, dword [ebx + 0x6e38]
mov ecx, dword [ebp + 0xc]
mov dword [esp + 0xc], eax
mov eax, dword [ebx + 0x6454]
mov dword [esp + 0x20], eax
mov eax, dword [ebx + 0x670c]
mov dword [esp + 0x10], eax
xor eax, eax
cmp dword [ecx + 0x40], 0
sete al
mov dword [ebx + 0x6454], eax
mov eax, dword [esi + 0x5540]
mov dword [ebx + 0x670c], eax
mov dword [esp + 8], eax
mov edx, dword [esi + 0x87ac]
mov dword [ebx + 0x6e54], edx
mov ecx, dword [esi + 0x87b0]
mov dword [ebx + 0x6e40], ecx
mov ecx, dword [esi + 0x87b4]
mov dword [ebx + 0x6e48], ecx
mov ecx, dword [esi + 0x87b8]
mov dword [ebx + 0x6e4c], ecx
mov ecx, dword [esi + 0x87bc]
mov dword [ebx + 0x6e50], ecx
mov esi, dword [ebx + 0x6e68]
cmp edx, esi
je 0x100caca2
mov ebx, dword [esp + 0xc]
xor edi, edi
mov eax, 0
inc edi
mov cl, byte [ebx + 0x14]
shl edi, cl
mov ecx, edx
sub ecx, esi
mov esi, dword [ebx + 0x30]
cmovl eax, edi
add eax, ecx
cmp eax, esi
jle 0x100caca2
sub edx, esi
mov ecx, dword [ebp + 8]
mov eax, 0
test edx, edx
cmovle eax, edi
lea eax, [edx + eax - 1]
mov dword [ecx + 0x6e68], eax
mov eax, dword [ebp + 8]
cmp dword [eax + 0x6710], 0
je 0x100cae45
mov eax, dword [ebp + 8]
xor ecx, ecx
cmp dword [esp + 0x10], 2
mov edx, dword [eax + 0x5ef8]
sete bl
test edx, edx
je 0x100c97e7
mov eax, dword [edx]
cmp dword [eax + 0xf8], 0
je 0x100c97e7
mov cl, bl
mov esi, dword [esp + 0x1c]
mov eax, dword [edx + ecx*4 + 8]
cmp eax, dword [esi]
jne 0x100cad09
add edx, 4
push ecx
push 0x7fffffff
push edx
call fcn.1001c039
add esp, 0xc
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x670c]
mov dword [esp + 8], eax
cmp dword [esp + 8], 3
je 0x100cade0
mov eax, dword [esp + 8]
cmp eax, dword [esp + 0x10]
je 0x100cade0
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x5ef8]
mov edx, eax
mov eax, dword [ecx + 0x58]
cmp eax, dword [edx + 0x6e54]
jne 0x100cae22
mov ecx, dword [esp + 0x10]
mov esi, dword [esp + 8]
mov eax, ecx
mov edx, esi
xor esi, 1
xor ecx, 1
xor eax, 2
xor edx, 2
or esi, eax
sete al
or edx, ecx
je 0x100cb2ef
test al, al
jne 0x100cb2ef
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov dword [eax + 0x670c], ecx
mov dword [eax + 0x6454], edx
jmp 0x100c9663
mov dword [ebx + 0x645c], 0
cmp dword [ebx + 0x641c], esi
jne 0x100c9663
test eax, eax
je 0x100cadaa
push dword [ebp + 8]
call fcn.100d16ca
add esp, 4
mov ecx, dword [ebp + 8]
xor edx, edx
inc edx
call fcn.100cde41
mov edi, eax
test eax, eax
js 0x100c9668
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 4]
mov ecx, ebx
mov dword [eax + 0x70], edi
call fcn.100c90ac
mov esi, dword [esp + 0x14]
test eax, eax
jns 0x100cabe2
jmp 0x100cb2d7
cmp dword [esp + 0x10], 3
je 0x100cae45
mov ecx, dword [ebp + 8]
xor eax, eax
cmp dword [esp + 0x10], 1
mov ecx, dword [ecx + 0x5ef8]
jmp 0x100cae30
test eax, eax
je 0x100c9663
push 1
mov eax, dword [ebp + 8]
push dword [eax + 0x641c]
push eax
call fcn.100c2c86
add esp, 0xc
test eax, eax
jns 0x100ca3cb
jmp 0x100cb2d7
cmp dword [esp + 0x10], 3
je 0x100cae45
xor eax, eax
cmp dword [esp + 0x10], 1
sete al
add ecx, 4
push eax
push 0x7fffffff
push ecx
call fcn.1001c039
add esp, 0xc
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x6e54]
mov eax, dword [eax + 0x6e68]
cmp esi, eax
jne 0x100cae76
mov edx, dword [ebp + 8]
cmp dword [edx + 0x6710], 0
jne 0x100cb071
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x670c]
jmp 0x100cb100
movapd xmm0, xmmword [0x10187140]
mov edx, dword [ebp + 8]
cmp dword [edx + 0x6710], 0
jne 0x100cb071
mov ecx, dword [esp + 0xc]
inc eax
xor edi, edi
inc edi
cdq
mov cl, byte [ecx + 0x14]
shl edi, cl
idiv edi
cmp esi, edx
mov edx, dword [ebp + 8]
je 0x100cae5b
cmp dword [edx + 0x7374], 0
je 0x100caeb6
mov eax, dword [edx + 0x6ebc]
jmp 0x100caeb8
xor eax, eax
mov ecx, dword [esp + 0xc]
mov ebx, dword [ebp + 8]
mov dword [esp + 8], eax
cmp dword [ecx + 0x34], 0
jne 0x100caedc
mov eax, 0xfffffff0
movupd xmmword [ebx + eax*4 + 0x7044], xmm0
add eax, 4
jne 0x100caece
mov ecx, ebx
call fcn.100cd844
test eax, eax
js 0x100cb2de
mov eax, dword [ebx + 0x6e68]
mov esi, dword [esp + 0xc]
inc eax
xor edx, edx
mov dword [ebx + 0x6e68], eax
inc edx
mov cl, byte [esi + 0x14]
mov edi, edx
cdq
shl edi, cl
idiv edi
xor edi, edi
mov dword [ebx + 0x6e68], edx
mov eax, dword [ebx + 0x5ef8]
mov dword [eax + 0x58], edx
xor eax, eax
cmp dword [esi + 0x34], edi
mov ecx, dword [ebx + 0x5ef8]
sete al
mov dword [ecx + 0x288], eax
mov eax, dword [ebx + 0x5ef8]
add eax, 4
push edi
mov esi, 0x7fffffff
push esi
push eax
call fcn.1001c039
add esp, 0xc
mov eax, dword [ebx + 0x5ef8]
add eax, 4
xor ecx, ecx
inc ecx
push ecx
push esi
push eax
call fcn.1001c039
add esp, 0xc
mov dword [ebx + 0x736c], edi
push ebx
call fcn.100c661c
add esp, 4
test eax, eax
jns 0x100caf86
mov edi, eax
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
test byte [eax + 0x244], 8
jne 0x100c9668
mov edx, dword [ebp + 8]
movapd xmm0, xmmword [0x10187140]
cmp dword [edx + 0x7374], 0
je 0x100cb058
mov esi, dword [esp + 8]
test esi, esi
je 0x100cb046
mov eax, dword [ebp + 8]
mov ecx, dword [esi]
mov eax, dword [eax + 0x6ebc]
mov eax, dword [eax]
mov edx, dword [eax + 0x44]
cmp edx, dword [ecx + 0x44]
jne 0x100cb046
mov edx, dword [eax + 0x48]
cmp edx, dword [ecx + 0x48]
jne 0x100cb046
mov eax, dword [eax + 0x50]
cmp eax, dword [ecx + 0x50]
jne 0x100cb046
mov ebx, esi
lea edi, [esi + 4]
xor esi, esi
push esi
push 0x7fffffff
push edi
call fcn.1001c094
add esp, 0xc
cmp dword [ebx + 0x27c], esi
je 0x100cb001
push 1
push 0x7fffffff
push edi
call fcn.1001c094
add esp, 0xc
mov edx, dword [ebp + 8]
mov esi, dword [esp + 8]
mov ebx, edx
mov edx, dword [edx + 0x6ebc]
mov eax, dword [esi]
mov edx, dword [edx]
lea ecx, [eax + 0x20]
lea edi, [edx + 0x20]
push dword [eax + 0x48]
push dword [eax + 0x44]
push dword [eax + 0x50]
push ecx
push eax
push edi
push edx
call fcn.1004d82d
add esp, 0x1c
mov eax, dword [esi + 0x54]
movapd xmm0, xmmword [0x10187140]
mov ecx, dword [ebx + 0x6ebc]
add eax, 2
mov dword [ecx + 0x54], eax
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x6e68]
mov ecx, dword [edx + 0x6ebc]
mov dword [ecx + 0x58], eax
mov esi, dword [edx + 0x6e54]
mov eax, dword [edx + 0x6e68]
cmp esi, eax
jne 0x100cae81
jmp 0x100cae5b
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x5ef8]
test eax, eax
je 0x100c97e7
mov ecx, dword [eax]
cmp dword [ecx + 0xf8], 0
je 0x100c97e7
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x670c]
cmp ecx, 3
je 0x100cb0ed
cmp ecx, dword [esp + 0x10]
je 0x100cb0ed
mov edx, dword [ebp + 8]
mov dword [edx + 0x7390], 0
cmp dword [eax + 0x58], esi
jne 0x100cb113
test byte [eax + 0x280], 4
jne 0x100cb12d
mov esi, dword [ebp + 8]
xor ebx, ebx
cmp ecx, 2
sete bl
xor edx, edx
mov ecx, esi
mov dword [esi + 0x6710], 0
call fcn.100cdded
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x5ef8]
mov dword [ecx + ebx*4 + 8], eax
jmp 0x100cb150
mov eax, dword [ebp + 8]
inc dword [eax + 0x7390]
mov dword [eax + 0x5ef8], 0
mov edx, dword [ebp + 8]
xor eax, eax
cmp ecx, 3
setne al
mov dword [edx + 0x6710], eax
jmp 0x100cb144
xor edx, edx
cmp ecx, 2
sete dl
add eax, 4
push edx
push 0x7fffffff
push eax
call fcn.1001c039
add esp, 0xc
mov eax, dword [ebp + 8]
mov dword [eax + 0x6710], 1
mov dword [eax + 0x5ef8], 0
mov ecx, dword [ebp + 8]
call fcn.100cd844
test eax, eax
js 0x100cb192
mov eax, dword [ebp + 8]
lea ecx, [eax + 0x6e40]
mov eax, dword [eax + 0x670c]
mov dword [esp + 0xc], ecx
cmp eax, 3
jne 0x100cb1a4
mov esi, dword [ebp + 8]
mov eax, dword [esi + 0x6980]
imul eax, dword [esi + 0x6988]
lea eax, [eax + eax - 2]
push eax
push 0xff
push dword [esi + 0x6704]
call fcn.10161ee0
add esp, 0xc
jmp 0x100cb1f1
mov eax, dword [ebp + 8]
mov dword [eax + 0x6710], 0
jmp 0x100c9663
mov esi, dword [ebp + 8]
xor ebx, ebx
cmp eax, 2
sete bl
mov edi, dword [esi + 0x6980]
cmp edi, ebx
jle 0x100cb1f1
mov ecx, dword [esi + 0x6988]
xor eax, eax
mov edx, ecx
imul edx, ebx
inc ebx
add edx, edx
add edx, dword [esi + 0x6704]
cmp ebx, edi
sete al
sub ecx, eax
add ecx, ecx
push ecx
push 0xff
push edx
call fcn.10161ee0
add esp, 0xc
mov edi, dword [esi + 0x6980]
cmp ebx, edi
jl 0x100cb1b9
mov eax, dword [esi + 0x5ef8]
mov edx, dword [ebp + 0xc]
lea ecx, [eax + 0x54]
add eax, 0x4c
push dword [edx + 0x40]
push dword [esi + 0x670c]
push dword [esp + 0x14]
push dword [esi + 0x6e38]
push ecx
push eax
call fcn.100c0dc3
add esp, 0x18
test eax, eax
js 0x100cb2d7
mov edi, dword [esp + 0x14]
mov eax, dword [ebp + 8]
mov edx, dword [edi + 0x87a4]
mov esi, eax
lea eax, [eax + 0x704c]
lea ecx, [edi + 0x848c]
shl edx, 2
lea edx, [edx + edx*2]
push edx
push ecx
push eax
call fcn.101613e0
add esp, 0xc
mov eax, dword [edi + 0x87a4]
mov ecx, dword [ebp + 0xc]
mov dword [esi + 0x7364], eax
mov eax, dword [edi + 0x87a8]
mov dword [esi + 0x736c], eax
xor eax, eax
cmp dword [ecx + 0x2c], 5
sete al
mov dword [esi + 0x6470], eax
mov eax, dword [esi + 0x7414]
test eax, eax
js 0x100cb341
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x6e54]
cmp edx, eax
jne 0x100cb2a3
mov ecx, dword [esp + 0x14]
cmp dword [ecx + 0x348], 1
je 0x100cb2b0
mov ecx, dword [ebp + 8]
mov dword [ecx + 0x7380], 1
mov ecx, dword [ebp + 8]
mov edi, dword [ecx + 0x7384]
mov ecx, dword [ecx + 0x6e38]
mov ecx, dword [ecx + 0x14]
test edi, edi
js 0x100cb323
sub edi, edx
xor esi, esi
dec esi
shl esi, cl
not esi
and edi, esi
cmp edi, eax
ja 0x100cb32a
jmp 0x100cb341
mov edi, eax
jmp 0x100c9668
mov edi, eax
mov dword [ebx + 0x6710], 0
jmp 0x100c9668
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x20]
cmp ecx, dword [eax + 0x6454]
je 0x100cae45
mov eax, dword [ebp + 8]
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
mov edi, 0xbaa8beb0
mov dword [eax + 0x670c], ecx
mov dword [eax + 0x6454], edx
jmp 0x100c9668
xor esi, esi
dec esi
shl esi, cl
not esi
mov ecx, dword [ebp + 8]
add eax, edx
and eax, esi
cmp dword [ecx + 0x7380], 0
cmove eax, edx
mov dword [ecx + 0x7384], eax
mov edx, dword [ebp + 0xc]
mov eax, 5
xor ecx, ecx
cmp dword [edx + 0x2c], eax
mov esi, edx
mov edx, dword [ebp + 8]
mov edx, dword [edx + 0x5ef8]
sete cl
mov edx, dword [edx]
or dword [edx + 0x54], ecx
cmp dword [esi + 0x2c], eax
je 0x100cb382
mov eax, dword [ebp + 8]
mov ecx, eax
mov eax, dword [eax + 0x7384]
cmp eax, dword [ecx + 0x6e54]
jne 0x100cb3c8
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x40], 0
je 0x100cb3c8
mov eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov dword [eax + 0x7384], 0xffffffff
mov eax, dword [eax + 0x5ef8]
mov dword [eax + 0x284], 1
cmp dword [ecx + 0x2c], 5
jne 0x100cb3c8
mov eax, dword [ebp + 8]
mov ecx, eax
lea eax, [eax + 0x7388]
mov dword [esp + 0x20], eax
mov eax, dword [ecx + 0x7388]
or eax, 1
mov dword [ecx + 0x7388], eax
jmp 0x100cb3db
mov eax, dword [ebp + 8]
lea ecx, [eax + 0x7388]
mov eax, dword [eax + 0x7388]
mov dword [esp + 0x20], ecx
mov ecx, dword [ebp + 8]
mov edx, ecx
lea ecx, [ecx + 0x6470]
mov esi, dword [edx + 0x5ef8]
mov dword [esp + 0xc], ecx
or dword [esi + 0x284], eax
cmp dword [edx + 0x670c], 3
je 0x100cb41b
mov eax, dword [ebp + 8]
cmp dword [eax + 0x6710], 0
je 0x100cb41b
mov eax, dword [ebp + 8]
cmp dword [eax + 0x7390], 2
jl 0x100ca529
mov eax, dword [ebp + 8]
xor edx, edx
mov ecx, eax
mov eax, dword [eax + 0x6e38]
mov ebx, dword [ecx + 0x5ef8]
mov ecx, dword [ebx]
mov dword [ecx + 0xd4], edx
mov ecx, dword [ebx]
mov dword [ecx + 0xd0], edx
cmp dword [eax + 0x488], edx
je 0x100cb4a2
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x73ec], 0
je 0x100cb4a2
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x73f0]
dec ecx
cmp ecx, 7
ja case.default.0x100cb465
jmp dword [ecx*4 + 0x101bf3a4]
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x6708], 0
jne case.0x100cb465.1
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x670c], 3
jne case.0x100cb465.1
mov ecx, dword [ebp + 8]
mov edx, dword [ebx]
mov ecx, dword [ecx + 0x737c]
mov dword [edx + 0xd4], ecx
jmp case.default.0x100cb465
mov edx, dword [ebp + 8]
mov cl, 1
cmp dword [edx + 0x6708], 0
jne 0x100cb4bd
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x670c], 3
setne cl
movzx ecx, cl
mov edx, dword [ebx]
mov dword [edx + 0xd4], ecx
mov ecx, dword [ebx]
mov edx, dword [ebp + 8]
mov ecx, dword [ecx + 0xd4]
mov dword [edx + 0x737c], ecx
mov ecx, dword [ebx + 0x50]
cmp dword [ebx + 0x4c], ecx
jne 0x100cb511
cmp dword [eax + 0x488], 0
je 0x100cb524
mov eax, dword [ebp + 8]
cmp dword [eax + 0x73ec], 0
je 0x100cb524
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x73f0]
cmp eax, 5
je 0x100cb50d
cmp eax, 3
jne 0x100cb863
mov eax, dword [ebx]
jmp 0x100cb533
mov ecx, dword [ebx]
setl al
movzx eax, al
mov dword [ecx + 0xd8], eax
jmp 0x100cb86f
mov eax, dword [ebx]
cmp dword [eax + 0xd4], 0
je 0x100cb865
mov dword [eax + 0xd8], 1
jmp 0x100cb86f
mov ecx, dword [ebx]
mov dword [ecx + 0xd4], 1
jmp case.default.0x100cb465
cmp eax, 0x18
jl 0x100cb581
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x348], 1
jne 0x100cb597
mov eax, dword [ebp + 0xc]
cmp dword [eax + 0x40], 0
jne 0x100cb5a5
jmp 0x100cb597
mov ecx, dword [ebx]
mov dword [ecx + 0xd0], 1
jmp case.default.0x100cb465
cmp eax, 0x10
jl 0x100cb91e
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x348], 3
jne 0x100cb565
mov eax, dword [esp + 0x14]
mov dword [eax + 0x364], 0
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x364], 1
jne 0x100cb5e7
mov eax, dword [ebp + 8]
cmp dword [eax + 0x6420], 2
jl 0x100cb5e7
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
test byte [eax + 0x40], 1
jne 0x100cb5d9
mov eax, dword [ebp + 8]
mov dword [eax + 0x646c], 1
jmp 0x100cb5e7
mov eax, dword [esp + 0x14]
mov dword [eax + 0x364], 2
mov edi, dword [esp + 0x14]
mov dword [esp + 0xc], 0
mov eax, dword [edi + 0x368]
mov ecx, dword [edi + 0x36c]
cmp eax, ecx
cmovg eax, ecx
mov ecx, dword [ebp + 8]
xor ebx, ebx
mov esi, ecx
mov ecx, dword [ecx + 0x6e34]
mov edx, dword [ecx + 0x2c]
mov ecx, dword [ecx + 0x30]
test edx, edx
cmovs edx, ebx
cmp edx, ecx
cmovl edx, ecx
mov ecx, 0xffffffdf
sub ecx, eax
mov eax, dword [esi + 0x6e38]
sub ecx, edx
mov eax, dword [eax + 0x4a0]
lea eax, [eax + eax*2]
lea eax, [ecx + eax*2]
mov dword [edi + 0x35c], eax
mov eax, dword [esi + 0x7378]
mov ecx, eax
inc ecx
mov dword [esi + 0x7378], ecx
mov dword [edi + 0x340], ecx
je 0x100cb672
mov ecx, dword [esp + 0x14]
mov edx, dword [ebp + 8]
and eax, 0x1f
movzx ecx, word [ecx + 0x552c]
mov word [edx + eax*2 + 0x73a0], cx
mov eax, dword [ebp + 8]
lea ecx, [eax + 0x74fc]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x14]
lea edx, [ecx + 0x5b90]
lea ecx, [ecx + 0x5e10]
mov dword [esp + 0x28], edx
lea edx, [eax + 0x7544]
mov dword [esp + 0x30], ecx
mov eax, dword [esp + 0x14]
xor esi, esi
mov dword [esp + 0x20], edx
mov ecx, dword [eax + 0x340]
mov eax, dword [eax + 0x5b74]
mov dword [esp + 0x10], ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
mov dword [esp + esi*4 + 0x40], 0x3c
cmp dword [esp + 0xc], eax
jae 0x100cb76a
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
cmp esi, dword [eax + ecx*4 + 0x5b6c]
jae 0x100cb76a
imul eax, dword [esp + 0xc], 0x780
lea ecx, [esi + esi*4]
add eax, dword [esp + 0x14]
mov eax, dword [eax + ecx*8 + 0x5b9c]
mov eax, dword [eax]
mov eax, dword [eax + 0xf8]
test eax, eax
je 0x100cb76a
mov ebx, dword [ebp + 8]
mov edi, dword [eax]
mov edx, dword [ebx + 0x7374]
test edx, edx
jle 0x100cb737
xor eax, eax
mov ecx, dword [ebx + eax*4 + 0x6ebc]
mov ecx, dword [ecx]
mov ecx, dword [ecx + 0xf8]
cmp dword [ecx], edi
je 0x100cb733
inc eax
cmp eax, edx
jl 0x100cb719
jmp 0x100cb737
mov dword [esp + esi*4 + 0x40], eax
mov ebx, dword [ebx + 0x7370]
test ebx, ebx
jle 0x100cb76a
xor eax, eax
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + eax*4 + 0x6f3c]
test ecx, ecx
je 0x100cb75d
mov ecx, dword [ecx]
mov ecx, dword [ecx + 0xf8]
cmp dword [ecx], edi
je 0x100cb764
inc eax
cmp eax, ebx
jl 0x100cb743
jmp 0x100cb76a
add edx, eax
mov dword [esp + esi*4 + 0x40], edx
inc esi
cmp esi, 0x10
jne 0x100cb6bb
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xc]
mov eax, dword [ebp + 8]
mov edi, dword [esp + 0x28]
and ecx, 0x1f
shl edx, 8
shl ecx, 9
lea esi, [eax + ecx]
xor eax, eax
mov dword [esp + 0x10], ecx
dec eax
mov dword [esp + 8], esi
mov dword [edx + esi + 0x74f8], eax
mov dword [edx + esi + 0x74f4], eax
mov eax, dword [esp + 0x24]
mov esi, 0xffffffc0
lea eax, [eax + ecx]
mov ecx, dword [edi]
mov ebx, dword [esp + esi + 0x80]
add edi, 0x28
and ecx, 3
lea ecx, [ecx + ebx*4]
mov dword [eax + esi + 0x40], ecx
add esi, 4
jne 0x100cb7b4
mov edi, dword [esp + 0x10]
mov ecx, dword [esp + 8]
xor eax, eax
mov ebx, dword [esp + 0x30]
dec eax
add edi, dword [esp + 0x20]
mov dword [edx + ecx + 0x7540], eax
mov dword [edx + ecx + 0x753c], eax
mov eax, 0xfffffb00
xor ecx, ecx
mov edx, ecx
mov esi, dword [ebx + eax + 0x500]
and edx, 0x7ffffffe
mov edx, dword [esp + edx*2 + 0x40]
and esi, 3
lea edx, [esi + edx*4]
mov dword [edi + ecx*4], edx
inc ecx
add eax, 0x28
jne 0x100cb7f7
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x20]
add dword [esp + 0x24], 0x100
add dword [esp + 0x28], 0x780
add ebx, 0x780
mov dword [esp + 0x30], ebx
mov ecx, eax
add edx, 0x100
inc ecx
cmp ecx, 2
mov eax, ecx
mov dword [esp + 0xc], ecx
jne 0x100cb69d
mov eax, dword [ebp + 8]
xor edi, edi
inc dword [eax + 0x6424]
jmp 0x100c9668
mov eax, dword [ebx]
mov dword [eax + 0xd8], 0
mov eax, dword [ebp + 8]
cmp dword [eax + 0x749c], 0
je 0x100cb9ca
mov eax, dword [ebp + 8]
cmp dword [eax + 0x74a8], 6
jg 0x100cb9ca
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x74b0]
dec eax
cmp eax, 1
ja 0x100cb9ca
push dword [ebx]
call fcn.1005b0ab
add esp, 4
test eax, eax
je 0x100cb9ca
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x74a8]
cmp ecx, 6
ja case.default.0x100cb8c6
jmp dword [ecx*4 + 0x101bf3c4]
mov dword [eax], 4
jmp case.default.0x100cb8c6
mov ecx, dword [ebx]
mov dword [ecx + 0xd0], 2
jmp case.default.0x100cb465
mov ecx, dword [ebx]
mov dword [ecx + 0xd0], 4
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x73f4]
test cl, 3
je 0x100cb4c8
mov edx, dword [ebp + 8]
cmp dword [edx + 0x73f0], 4
jg 0x100cb4c8
shr ecx, 1
and ecx, 1
jmp 0x100cb4c0
cmp eax, 8
jge 0x100cb565
jmp 0x100cb5a5
mov dword [eax], 7
jmp case.default.0x100cb8c6
mov dword [eax], 6
jmp case.default.0x100cb8c6
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x74b4], 0
je 0x100cb989
mov dword [eax], 5
jmp case.default.0x100cb8c6
mov dword [eax], 2
jmp case.default.0x100cb8c6
mov dword [eax], 3
jmp case.default.0x100cb8c6
mov dword [eax], 0
jmp case.default.0x100cb8c6
cmp ecx, 0x2f
jg 0x100c9668
mov ecx, dword [ebp + 8]
mov esi, ebx
mov ecx, dword [ecx + 0x7414]
test ecx, ecx
jns 0x100ca42f
jmp 0x100c9668
mov dword [eax], 1
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x74b0], 2
jne 0x100cb9a2
mov dword [eax + 4], 1
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x74a8], 5
jne 0x100cb9ca
mov ecx, dword [ebp + 8]
cmp dword [ecx + 0x74b8], 0
je 0x100cb9c3
mov dword [eax + 8], 1
jmp 0x100cb9ca
mov dword [eax + 8], 2
mov eax, dword [ebp + 8]
cmp dword [eax + 0x74bc], 0
je 0x100cba52
mov eax, dword [ebp + 8]
mov esi, dword [eax + 0x74c0]
test esi, esi
jne 0x100cb9fb
mov eax, dword [ebp + 8]
cmp dword [eax + 0x74c4], 0
jne 0x100cb9fb
mov eax, dword [ebp + 8]
cmp dword [eax + 0x74c8], 0
je 0x100cba52
push 0x24
push 6
push dword [ebx]
call fcn.10051e2e
add esp, 0xc
test eax, eax
je 0x100cba52
mov edi, eax
imul eax, esi, 0x168
cvtsi2sd xmm0, eax
mov eax, dword [edi + 4]
mulsd xmm0, qword [0x101a10f0]
sub esp, 0xc
movsd qword [esp + 4], xmm0
mov dword [esp], eax
call fcn.1004f7e8
add esp, 0xc
mov eax, dword [ebp + 8]
push dword [eax + 0x74c8]
push dword [eax + 0x74c4]
push dword [edi + 4]
call fcn.1004f88c
add esp, 0xc
mov eax, dword [ebp + 8]
cmp dword [eax + 0x7400], 0
je 0x100cba8a
push 1
push 7
push dword [ebx]
call fcn.10051e2e
add esp, 0xc
test eax, eax
je 0x100cba8a
mov ecx, dword [ebp + 8]
mov eax, dword [eax + 4]
mov edx, ecx
mov cl, byte [ecx + 0x7404]
mov byte [eax], cl
mov dword [edx + 0x7400], 0
mov eax, dword [ebp + 8]
cmp dword [eax + 0x740c], 0
je 0x100cbaef
mov eax, dword [ebp + 8]
lea esi, [eax + 0x740c]
push dword [eax + 0x7408]
push 1
push dword [ebx]
call fcn.10051e2e
add esp, 0xc
test eax, eax
je 0x100cbacf
mov ecx, dword [ebp + 8]
push dword [ecx + 0x7408]
push dword [ecx + 0x740c]
push dword [eax + 4]
call fcn.101613e0
add esp, 0xc
push esi
call fcn.10053962
add esp, 4
mov eax, dword [ebp + 8]
mov dword [eax + 0x7408], 0
mov eax, dword [eax + 4]
or dword [eax + 0x350], 2
mov eax, dword [ebp + 8]
cmp dword [eax + 0x74dc], 0
je 0x100cbb32
mov eax, dword [ebp + 8]
push dword [eax + 0x74e0]
call fcn.10056647
add esp, 4
test eax, eax
je 0x100cbb32
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x74e0]
cmp eax, 2
je 0x100cbb32
mov ecx, dword [ebx]
mov dword [ecx + 0x134], eax
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx]
mov dword [ecx + 0x140], eax
mov eax, dword [ebp + 8]
mov edx, eax
mov esi, dword [eax + 0x6e38]
mov eax, dword [eax + 0x5ef8]
mov ecx, dword [edx + 0x7368]
mov dword [esp + 8], esi
mov dword [eax + 0x5c], ecx
xor ecx, ecx
mov dword [edx + 0x7368], ecx
cmp dword [esi + 0x294], ecx
mov edx, dword [edx + 4]
jne 0x100cbb6c
cmp dword [edx + 0x238], 0
jle 0x100cbb87
mov esi, dword [esp + 8]
mov ecx, dword [edx + 0x8c]
mov esi, dword [esi + 0x298]
cmp ecx, esi
cmovge esi, ecx
mov dword [edx + 0x8c], esi
mov edi, dword [ebp + 8]
xor edx, edx
mov esi, dword [eax + 0x54]
mov ecx, dword [edi + edx*4 + 0x7004]
cmp esi, ecx
jl 0x100cbbb5
test edx, edx
je 0x100cbba5
mov dword [edi + edx*4 + 0x7000], ecx
inc edx
cmp edx, 0x10
jne 0x100cbb8c
mov esi, dword [eax + 0x54]
mov edx, 0x10
jmp 0x100cbbbd
test edx, edx
je 0x100cbdd1
mov ecx, dword [ebp + 8]
mov dword [ecx + edx*4 + 0x7000], esi
mov ecx, dword [eax]
mov edi, 0x10
sub edi, edx
cmp dword [ecx + 0x58], 3
jne 0x100cbbdd
cmp edi, 2
jl 0x100cbc18
jmp 0x100cbc1d
mov ecx, dword [ebp + 8]
mov ecx, dword [ecx + 0x703c]
cmp ecx, 0x80000000
je 0x100cbc1d
mov esi, dword [ebp + 8]
mov dword [esp + 0x10], ecx
sar dword [esp + 0x10], 0x1f
mov ebx, dword [esi + 0x7040]
mov esi, ebx
sar esi, 0x1f
sub ebx, ecx
sbb esi, dword [esp + 0x10]
cmp edi, 1
jg 0x100cbc1d
cmp ebx, 3
sbb esi, 0
jl 0x100cbc1d
xor edi, edi
inc edi
jmp 0x100cbc21
test edx, edx
je 0x100cbc44
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx]
cmp dword [ecx + 0x8c], edi
jge 0x100cbc6c
mov edx, dword [esp + 8]
cmp dword [edx + 0x294], 0
jne 0x100cbc6c
mov dword [ecx + 0x8c], edi
jmp 0x100cbc6c
mov edx, dword [ebp + 8]
mov ecx, 0xffffffc4
mov dword [edx + ecx + 0x7044], 0x80000000
add ecx, 4
jne 0x100cbc4c
mov ecx, dword [eax + 0x54]
mov dword [edx + 0x7004], ecx
mov dword [eax + 0x5c], 1
mov esi, dword [ebp + 8]
xor ecx, ecx
dec ecx
mov edx, ecx
inc ecx
cmp dword [esi + edx*4 + 0x6fc0], 0
jne 0x100cbc72
cmp ecx, 0x11
jae 0x100c97e7
mov esi, dword [ebp + 8]
mov dword [esi + edx*4 + 0x6fc0], eax
cmp dword [eax + 0x280], 0
jne 0x100cbca5
mov dword [eax + 0x280], 4
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x6fbc]
mov ebx, dword [eax + 0x6fc0]
mov dword [esp + 8], edx
xor edx, edx
test ebx, ebx
je 0x100cbcf4
mov eax, dword [esp + 8]
mov esi, 0x1bf1
mov edi, dword [ebx]
cmp dword [edi + 0x54], 0
jne 0x100cbcf8
cmp dword [ebx + 0x5c], 0
jne 0x100cbcf8
mov edi, dword [ebx + 0x54]
cmp edi, dword [eax + 0x54]
lea edi, [esi - 0x1bf0]
cmovl eax, ebx
mov ebx, dword [ebp + 8]
cmovl edx, edi
mov ebx, dword [ebx + esi*4]
inc esi
test ebx, ebx
jne 0x100cbcc7
jmp 0x100cbcf8
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x1c]
mov ebx, dword [esi]
cmp dword [ebx + 0x8c], 0
jne 0x100cbd2a
mov esi, dword [esp + 8]
mov esi, dword [esi]
cmp dword [esi + 0x54], 0
jne 0x100cbd1d
mov esi, dword [esp + 8]
cmp dword [esi + 0x5c], 0
je 0x100cbd2a
mov esi, dword [ebp + 8]
mov dword [esi + 0x7048], 0x80000000
mov esi, dword [ebp + 8]
mov edi, dword [eax + 0x54]
mov esi, dword [esi + 0x7048]
mov dword [esp + 8], edi
cmp edi, esi
mov dword [esp + 0x10], esi
jl 0x100cbd4c
mov ebx, dword [ebx + 0x8c]
cmp ecx, ebx
jl 0x100cbd90
mov esi, dword [ebp + 8]
and byte [eax + 0x280], 0xfb
cmp dword [esi + edx*4 + 0x6fbc], 0
je 0x100cbd76
mov esi, dword [ebp + 8]
lea ebx, [esi + edx*4 + 0x6fc0]
mov esi, dword [ebx]
mov dword [ebx - 4], esi
add ebx, 4
test esi, esi
jne 0x100cbd6a
mov esi, dword [esp + 0x10]
cmp dword [esp + 8], esi
jl 0x100ca529
mov esi, dword [esp + 0x1c]
mov esi, dword [esi]
mov ebx, dword [esi + 0x8c]
cmp ecx, ebx
jl 0x100ca529
mov ecx, dword [ebp + 8]
test edx, edx
mov dword [ecx + 0x7044], eax
je 0x100cbdd8
mov ecx, dword [eax + 0x54]
mov edx, dword [ebp + 8]
mov dword [edx + 0x7048], ecx
cmp dword [eax + 0x284], 0
mov ecx, dword [edx + 0x7388]
je 0x100cbdfa
mov edx, dword [esp + 0x20]
or ecx, 2
mov dword [edx], ecx
mov edx, dword [eax + 0x284]
jmp 0x100cbdfc
xor edx, edx
jmp 0x100cbbc7
mov ecx, dword [ebp + 8]
mov edx, dword [ecx + 0x6fbc]
test edx, edx
je 0x100cbda5
mov esi, dword [edx]
mov ecx, 0x80000000
cmp dword [esi + 0x54], 0
jne 0x100cbda8
cmp dword [edx + 0x5c], 0
jne 0x100cbda8
jmp 0x100cbda5
xor edx, edx
shr ecx, 1
and ecx, 1
or ecx, edx
mov dword [eax + 0x284], ecx
jne 0x100ca529
mov ecx, dword [esp + 0x1c]
mov ecx, dword [ecx]
test byte [ecx + 0x3c], 8
jne 0x100cbe33
test byte [ecx + 0x42], 0x40
jne 0x100cbe33
mov eax, dword [ebp + 8]
mov dword [eax + 0x7044], 0
jmp 0x100ca529
mov eax, dword [eax]
or dword [eax + 0x128], 1
jmp 0x100ca529