Function at 0x10066cc0
Capabilities:
Encrypt data using speck
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x240
mov edi, dword [edx + 0x1c]
lea eax, [edx + 0x1c]
mov dword [esp + 0xac], ecx
mov dword [esp + 0x10], edx
mov dword [edx + 0x1c], 0
mov dword [esp + 0x14], eax
test edi, edi
je 0x10066d2d
mov dword [esp + 0x1a0], edi
mov al, byte [edi + 0x40]
test al, al
jne 0x1006725f
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
push dword [eax]
call dword [ecx]
add esp, 4
mov cl, 1
mov ebx, eax
mov esi, edx
xchg byte [edi + 0x30], cl
test cl, cl
je 0x10067239
push ebx
call dword [esi + 0xc]
add esp, 4
jmp 0x1006725f
movq xmm0, qword [esp + 0x80]
movq xmm1, qword [esp + 0x88]
movq xmm2, qword [esp + 0x90]
movq xmm3, qword [esp + 0x98]
movsd xmm4, qword [esp + 0xa0]
mov eax, dword [esp + 0xa8]
movq qword [esp + 0x108], xmm0
movq qword [esp + 0x110], xmm1
movq qword [esp + 0x118], xmm2
movq qword [esp + 0x120], xmm3
movsd qword [esp + 0x128], xmm4
mov dword [esp + 0x130], eax
mov dword [esp + 0x1e8], eax
movq qword [esp + 0x1c0], xmm0
movq qword [esp + 0x1c8], xmm1
movq qword [esp + 0x1d0], xmm2
movq qword [esp + 0x1d8], xmm3
movsd qword [esp + 0x1e0], xmm4
mov eax, dword [esp + 0x10]
mov edi, dword [eax + 0x18]
test edi, edi
je 0x1006722c
mov ecx, dword [edi + 8]
call fcn.100f4af0
mov eax, dword [0x10551f14]
test eax, eax
jne 0x10068e3d
mov dword [esp + 0x16c], 0
lea eax, [edi + 8]
mov dword [esp + 0x1b0], eax
mov al, byte [edi + 0xc]
test al, al
jne 0x10069784
movsd xmm0, qword [edi + 0x80]
mov dword [esp + 0x1c], edi
movsd qword [esp + 0x180], xmm0
movsd xmm0, qword [edi + 0x70]
movsd xmm1, qword [edi + 0x78]
movsd qword [esp + 0x178], xmm1
movsd qword [esp + 0x170], xmm0
mov eax, dword [edi + 0x30]
mov ecx, dword [edi + 0x34]
mov edx, dword [edi + 0x38]
mov esi, dword [edi + 0x3c]
mov edi, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], esi
xor eax, 0x6e657261
xor edi, 0x70736575
mov dword [esp + 0x30], edi
mov edi, ecx
xor ecx, 0x6c796765
xor edi, 0x736f6d65
mov dword [esp + 0x34], edi
mov dword [esp + 0x3c], ecx
mov ecx, esi
mov dword [esp + 0x38], eax
mov eax, edx
xor edx, 0x79746573
xor esi, 0x74656462
xor ecx, 0x646f7261
xor eax, 0x6e646f6d
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x40], eax
mov dword [esp + 0x48], edx
mov dword [esp + 0x4c], esi
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
lea edx, [ecx + 0x18]
mov dword [esp + 0x1b4], edx
lea edx, [esp + 0x20]
mov dword [esp + 0xc], edx
call fcn.10062430
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x34]
shl edx, 0x18
xor esi, edi
mov dword [esp + 0x1f0], edi
mov edi, eax
or edx, dword [esp + 0x54]
mov dword [esp + 0x78], edx
xor ecx, edx
mov edx, dword [esp + 0x30]
add edx, eax
mov dword [esp + 4], edx
mov edx, dword [esp + 0x44]
adc ebx, edx
shld edi, edx, 0xd
shld edx, eax, 0xd
mov eax, dword [esp + 0x38]
mov dword [esp + 8], ebx
xor edx, ebx
mov ebx, dword [esp + 4]
xor edi, ebx
add eax, esi
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
adc eax, ecx
mov dword [esp + 0x190], eax
mov eax, esi
shrd esi, ecx, 0x10
shld eax, ecx, 0x10
xor esi, dword [esp + 0x190]
xor eax, dword [esp]
add dword [esp + 8], eax
mov ecx, eax
adc ebx, esi
shld ecx, esi, 0x15
shrd eax, esi, 0xb
mov esi, edi
xor eax, ebx
xor ecx, dword [esp + 8]
add dword [esp], edi
adc dword [esp + 0x190], edx
shld esi, edx, 0x11
shrd edi, edx, 0xf
mov edx, ebx
mov ebx, dword [esp + 0x1f0]
xor esi, dword [esp]
xor edx, dword [esp + 0x78]
mov dword [esp + 0x78], 0x10
xor dword [esp + 8], ebx
mov ebx, dword [esp + 0x190]
xor edi, ebx
xor ebx, 0xff
add dword [esp + 8], esi
adc edx, edi
mov dword [esp + 4], edx
mov edx, esi
shrd esi, edi, 0x13
shld edx, edi, 0xd
xor esi, dword [esp + 4]
mov edi, ecx
xor edx, dword [esp + 8]
add ebx, ecx
adc dword [esp], eax
shld edi, eax, 0x10
shrd ecx, eax, 0x10
xor edi, ebx
xor ecx, dword [esp]
add dword [esp + 4], edi
mov eax, edi
adc dword [esp + 8], ecx
shld eax, ecx, 0x15
shrd edi, ecx, 0xb
mov ecx, edx
xor edi, dword [esp + 8]
xor eax, dword [esp + 4]
add ebx, edx
adc dword [esp], esi
shld ecx, esi, 0x11
shrd edx, esi, 0xf
xor ecx, ebx
xor edx, dword [esp]
add dword [esp + 4], ecx
mov esi, ecx
adc dword [esp + 8], edx
shld esi, edx, 0xd
shrd ecx, edx, 0x13
mov edx, eax
xor ecx, dword [esp + 8]
xor esi, dword [esp + 4]
add dword [esp], eax
adc ebx, edi
shld edx, edi, 0x10
shrd eax, edi, 0x10
xor edx, dword [esp]
xor eax, ebx
add dword [esp + 8], edx
mov edi, edx
adc dword [esp + 4], eax
shld edi, eax, 0x15
shrd edx, eax, 0xb
mov eax, esi
xor edx, dword [esp + 4]
xor edi, dword [esp + 8]
add dword [esp], esi
adc ebx, ecx
shld eax, ecx, 0x11
shrd esi, ecx, 0xf
xor eax, dword [esp]
xor esi, ebx
add dword [esp + 8], eax
mov ecx, eax
adc dword [esp + 4], esi
shld ecx, esi, 0xd
shrd eax, esi, 0x13
mov esi, edi
xor ecx, dword [esp + 8]
xor eax, dword [esp + 4]
add ebx, edi
adc dword [esp], edx
shld esi, edx, 0x10
shrd edi, edx, 0x10
mov edx, dword [esp]
xor esi, ebx
xor edi, edx
shld esi, edi, 0x15
add ebx, ecx
adc edx, eax
shrd eax, ecx, 0xf
mov ecx, dword [esp + 0x1c]
xor eax, esi
xor eax, edx
xor eax, ebx
mov edx, dword [ecx + 0x40]
mov esi, dword [ecx + 0x44]
mov ecx, edx
mov dword [esp], edx
and ecx, eax
shr eax, 0x19
movd xmm0, eax
movdqu xmm1, xmmword [esi + ecx]
lea ebx, [ecx + 0x10]
mov dword [esp + 8], ecx
punpcklbw xmm0, xmm0
and ebx, edx
pshuflw xmm0, xmm0, 0xe0
mov dword [esp + 4], ebx
pshufd xmm0, xmm0, 0
movdqa xmmword [esp + 0x1f0], xmm0
pcmpeqb xmm0, xmm1
movdqa xmmword [esp + 0x190], xmm1
pcmpeqd xmm1, xmm1
pmovmskb edi, xmm0
test di, di
je 0x100671d0
mov eax, edi
mov ecx, dword [esp + 0x10]
lea edi, [eax - 1]
and edi, eax
bsf ax, ax
movzx eax, ax
add eax, dword [esp + 8]
and eax, dword [esp]
neg eax
lea ebx, [eax + eax*8]
lea edx, [esi + ebx*4 - 0x24]
call fcn.100354f0
pcmpeqd xmm1, xmm1
test al, al
je 0x10067110
mov eax, dword [esp + 0x10]
mov ecx, ebx
mov eax, dword [eax + 0xc]
cmp eax, dword [esi + ebx*4 - 0x18]
jne 0x10067110
mov edx, dword [esp + 0x10]
mov dword [esp + 0x6c], edi
mov dword [esp + 0xf0], esi
mov dword [esp + 0x64], ecx
mov edi, dword [edx + 8]
mov edx, dword [esi + ecx*4 - 0x1c]
xor esi, esi
nop dword [eax + eax]
cmp eax, esi
je 0x10067865
movzx ecx, byte [edi + esi]
mov bh, byte [edx + esi]
inc esi
mov bl, cl
add bl, 0xbf
cmp bl, 0x1a
setb ch
shl ch, 5
or ch, cl
mov cl, bh
add cl, 0xbf
cmp cl, 0x1a
setb cl
shl cl, 5
or cl, bh
cmp ch, cl
je 0x10067180
mov esi, dword [esp + 0xf0]
mov edi, dword [esp + 0x6c]
jmp 0x10067110
movdqa xmm0, xmmword [esp + 0x190]
mov ecx, dword [esp + 4]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
test ax, ax
jne 0x10067e55
mov edx, dword [esp + 0x78]
movdqu xmm2, xmmword [esi + ecx]
movdqa xmm0, xmmword [esp + 0x1f0]
mov dword [esp + 8], ecx
lea eax, [ecx + edx + 0x10]
add edx, 0x10
pcmpeqb xmm0, xmm2
movdqa xmmword [esp + 0x190], xmm2
and eax, dword [esp]
mov dword [esp + 0x78], edx
pmovmskb edi, xmm0
mov dword [esp + 4], eax
jmp 0x10067110
mov dword [esp + 0x2c], 3
jmp 0x100692f7
mov eax, dword [edi + 0x2c]
test eax, eax
je 0x10067249
push dword [edi + 0x28]
call dword [eax + 0xc]
add esp, 4
mov dword [edi + 0x28], ebx
mov dword [edi + 0x2c], esi
xor eax, eax
xchg byte [edi + 0x30], al
mov al, byte [edi + 0x40]
test al, al
je 0x10067345
mov al, 1
xchg byte [edi + 0x24], al
test al, al
je 0x100672d3
call sub.KERNEL32.dll_GetProcessHeap
push 0xc
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10069773
mov ecx, 0x103801ad
mov edx, 0x14
mov dword [eax], 0
mov edi, eax
mov byte [eax + 8], 4
call fcn.1004c900
mov esi, dword [edi]
mov dword [esp + 8], eax
mov dword [esp], edi
test esi, esi
je 0x1006744e
mov ebx, dword [edi + 4]
push esi
call dword [ebx]
add esp, 4
cmp dword [ebx + 4], 0
je 0x1006744e
cmp dword [ebx + 8], 9
jae 0x1006743b
call sub.KERNEL32.dll_GetProcessHeap
push esi
jmp 0x10067443
mov eax, dword [edi + 8]
movzx edx, word [edi + 0x12]
mov dword [esp + 0xe8], eax
mov eax, dword [edi + 0xc]
mov dword [esp + 0x15c], eax
mov al, byte [edi + 0x10]
mov byte [esp + 0x160], al
mov al, byte [edi + 0x11]
mov byte [esp + 0xec], al
mov eax, dword [edi + 0x14]
mov dword [edi + 0x14], 2
mov cl, byte [edi + 0x20]
mov byte [esp + 0x74], cl
mov cl, byte [edi + 0x21]
mov byte [esp + 0x18], cl
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x68], ecx
mov ecx, dword [edi + 0x1c]
mov dword [esp + 0x70], ecx
movzx ecx, word [edi + 0x22]
mov word [esp + 0x60], cx
xor ecx, ecx
cmp eax, 2
xchg byte [edi + 0x24], cl
je 0x100676e5
cmp eax, 3
jne 0x100676ef
mov ecx, dword [esp + 0x14]
mov esi, dword [esp + 0x1a0]
mov edi, dword [ecx]
test edi, edi
je 0x100673cc
mov al, 1
mov bl, 1
xchg byte [edi + 0x40], al
mov al, 1
xchg byte [edi + 0x30], al
test al, al
jne 0x10067390
mov eax, dword [edi + 0x28]
xor edx, edx
mov dword [esp], eax
mov eax, dword [edi + 0x2c]
mov dword [edi + 0x2c], 0
xchg byte [edi + 0x30], dl
mov ecx, dword [esp + 0x14]
test eax, eax
je 0x10067390
push dword [esp]
call dword [eax + 0xc]
mov ecx, dword [esp + 0x18]
add esp, 4
xchg byte [edi + 0x3c], bl
test bl, bl
jne 0x100673bc
mov eax, dword [edi + 0x34]
mov ebx, dword [edi + 0x38]
xor edx, edx
mov dword [edi + 0x38], 0
xchg byte [edi + 0x3c], dl
mov ecx, dword [esp + 0x14]
test ebx, ebx
je 0x100673bc
push eax
call dword [ebx + 4]
mov ecx, dword [esp + 0x18]
add esp, 4
mov eax, dword [ecx]
lock dec dword [eax]
jne 0x100673cc
call fcn.10062360
mov ecx, dword [esp + 0x14]
mov dword [ecx], esi
movsd xmm1, qword [esp + 0x88]
movq xmm0, qword [esp + 0x80]
movq xmm2, qword [esp + 0x98]
mov eax, dword [esp + 0xa8]
movsd qword [esp + 0x110], xmm1
movsd xmm1, qword [esp + 0x90]
movq qword [esp + 0x108], xmm0
movq qword [esp + 0x120], xmm2
mov dword [esp + 0x130], eax
movsd qword [esp + 0x118], xmm1
movq xmm1, qword [esp + 0xa0]
movq qword [esp + 0x128], xmm1
jmp 0x100675f0
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [edi], eax
mov dword [edi + 4], 0x10397e2c
mov edi, 1
movsd xmm2, qword [esp + 0x38]
movsd xmm1, qword [esp + 0x30]
mov eax, dword [esp + 0x48]
movq xmm0, qword [esp + 0x40]
movsd qword [esp + 0xc8], xmm2
movsd qword [esp + 0xc0], xmm1
movq xmm2, qword [esp + 0x20]
movq xmm1, qword [esp + 0x28]
mov dword [esp + 0xd8], eax
movq qword [esp + 0xd0], xmm0
movq qword [esp + 0xb8], xmm1
movq qword [esp + 0xb0], xmm2
mov esi, dword [esp + 0x1a0]
mov al, 1
mov bl, 1
xchg byte [esi + 0x40], al
mov al, 1
xchg byte [esi + 0x30], al
test al, al
jne 0x100674ea
mov ecx, dword [esi + 0x2c]
mov eax, dword [esi + 0x28]
xor edx, edx
mov dword [esi + 0x2c], 0
xchg byte [esi + 0x30], dl
test ecx, ecx
je 0x100674ea
push eax
call dword [ecx + 0xc]
add esp, 4
xchg byte [esi + 0x3c], bl
test bl, bl
jne 0x1006750e
mov ecx, dword [esi + 0x38]
mov eax, dword [esi + 0x34]
xor edx, edx
mov dword [esi + 0x38], 0
xchg byte [esi + 0x3c], dl
test ecx, ecx
je 0x1006750e
push eax
call dword [ecx + 4]
add esp, 4
mov eax, dword [esp + 0x1a0]
lock dec dword [eax]
mov ebx, dword [esp + 4]
jne 0x1006752a
lea ecx, [esp + 0x1a0]
call fcn.10062360
mov esi, dword [esp + 8]
test edi, edi
je 0x1006754a
mov eax, dword [esp + 0xac]
mov ecx, dword [esp]
mov dword [eax], 1
mov dword [eax + 4], ecx
jmp 0x100693ef
mov eax, dword [esp + 0xd8]
movq xmm0, qword [esp + 0xd0]
movq xmm1, qword [esp + 0xc8]
movq xmm2, qword [esp + 0xc0]
movq xmm3, qword [esp + 0xb0]
movsd xmm4, qword [esp + 0xb8]
cmp dword [esp + 0x1c], 4
mov edx, dword [esp]
mov dword [esp + 0xa8], eax
movq qword [esp + 0xa0], xmm0
movq qword [esp + 0x98], xmm1
movq qword [esp + 0x90], xmm2
movsd qword [esp + 0x88], xmm4
movq qword [esp + 0x80], xmm3
movq qword [esp + 0x108], xmm3
movsd qword [esp + 0x110], xmm4
movq qword [esp + 0x118], xmm2
movq qword [esp + 0x120], xmm1
movq qword [esp + 0x128], xmm0
mov dword [esp + 0x130], eax
jne 0x10067602
mov eax, dword [esp + 0xac]
mov dword [eax], 2
jmp 0x100693ef
mov eax, dword [esp + 0x130]
movsd xmm2, qword [esp + 0x120]
movsd xmm1, qword [esp + 0x118]
movq xmm0, qword [esp + 0x128]
mov dword [esp + 0x1e8], eax
mov eax, dword [esp + 0x1c]
movsd qword [esp + 0x1d8], xmm2
movsd qword [esp + 0x1d0], xmm1
movq xmm2, qword [esp + 0x108]
movq xmm1, qword [esp + 0x110]
movq qword [esp + 0x1e0], xmm0
cmp eax, 3
movq qword [esp + 0x1c8], xmm1
movq qword [esp + 0x1c0], xmm2
je 0x10066dc9
mov ecx, dword [esp + 0xac]
movsd xmm1, qword [esp + 0x1c8]
movq xmm0, qword [esp + 0x1c0]
movq xmm2, qword [esp + 0x1d8]
mov dword [ecx], 0
mov dword [ecx + 4], edx
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], ebx
mov dword [ecx + 0x10], eax
movsd qword [ecx + 0x1c], xmm1
movsd xmm1, qword [esp + 0x1d0]
mov eax, dword [esp + 0x1e8]
movq qword [ecx + 0x14], xmm0
movq qword [ecx + 0x2c], xmm2
movsd qword [ecx + 0x24], xmm1
movq xmm1, qword [esp + 0x1e0]
mov dword [ecx + 0x3c], eax
movq qword [ecx + 0x34], xmm1
jmp 0x100693ef
mov word [esp + 0x7c], dx
jmp 0x10067268
mov ecx, dword [esp + 0xe8]
mov esi, dword [esp + 0x68]
mov bh, byte [esp + 0x74]
mov bl, byte [esp + 0x18]
movzx edi, word [esp + 0x60]
cmp eax, 1
mov dword [esp + 0x170], ecx
mov ecx, dword [esp + 0x15c]
mov dword [esp + 0x174], ecx
mov cl, byte [esp + 0x160]
mov byte [esp + 0x178], cl
mov cl, byte [esp + 0xec]
mov byte [esp + 0x179], cl
mov ecx, dword [esp + 0x70]
mov word [esp + 0x17a], dx
mov dword [esp + 0x17c], eax
mov dword [esp + 0x180], esi
mov dword [esp + 0x184], ecx
mov byte [esp + 0x188], bh
mov byte [esp + 0x189], bl
mov word [esp + 0x18a], di
mov eax, dword [esi + 8]
mov word [esp + 0x7c], dx
jne 0x100679e7
mov esi, dword [esp + 0x10]
cmp eax, 3
je 0x100679f4
mov eax, dword [esp + 0x188]
movsd xmm0, qword [esp + 0x180]
movsd xmm2, qword [esp + 0x170]
movsd xmm1, qword [esp + 0x178]
lea edx, [esi + 0x18]
lea ecx, [esp + 0x20]
mov dword [esp + 0x158], eax
lea eax, [esp + 0x140]
movsd qword [esp + 0x150], xmm0
movsd qword [esp + 0x148], xmm1
movsd qword [esp + 0x140], xmm2
push eax
push esi
call fcn.100d6730
add esp, 8
mov eax, dword [esp + 0x20]
movsd xmm2, qword [esp + 0x38]
movsd xmm1, qword [esp + 0x40]
movq xmm0, qword [esp + 0x30]
xor edi, edi
mov dword [esp], eax
mov eax, dword [esp + 0x24]
movsd qword [esp + 0xb8], xmm2
movsd qword [esp + 0xc0], xmm1
movq xmm2, qword [esp + 0x48]
movq xmm1, qword [esp + 0x50]
movq qword [esp + 0xb0], xmm0
mov dword [esp + 8], eax
mov eax, dword [esp + 0x28]
movq qword [esp + 0xc8], xmm2
movq qword [esp + 0xd0], xmm1
mov dword [esp + 4], eax
mov eax, dword [esp + 0x2c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x58]
mov dword [esp + 0xd8], eax
jmp 0x100674b6
mov eax, dword [0x10551ebc]
cmp eax, 5
jb 0x10067874
mov eax, dword [0x10551ec0]
mov eax, dword [0x10411958]
mov esi, dword [esp + 0x10]
dec eax
cmp eax, 5
jb 0x100679aa
mov ecx, dword [0x10411344]
test ecx, ecx
je 0x100679aa
mov al, 1
cmp ecx, 1
je 0x100678a7
cmp ecx, 2
jne 0x10069745
mov al, 2
movzx edx, al
mov ecx, 0x10411344
call fcn.10109ff0
test al, al
je 0x100679aa
mov ecx, dword [0x10411348]
mov eax, dword [ecx + 0x30]
test eax, eax
je 0x1006983e
mov edx, dword [ecx + 0x2c]
mov esi, dword [ecx + 0x34]
mov edi, dword [ecx + 0x38]
mov dword [esp + 0xb0], 0
mov dword [esp + 0x20], 0x1039ea38
mov dword [esp + 0x24], 2
mov dword [esp + 0x28], 0
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], esi
mov esi, dword [esp + 0x10]
lea edx, [esp + 0x80]
mov dword [esp + 0xc0], edi
lea edi, [esp + 0xb0]
lea eax, [esp + 0x170]
mov dword [esp + 0x30], edx
lea edx, [esp + 0x108]
mov dword [esp + 0x108], edi
lea edi, [ecx + 0x2c]
mov dword [esp + 0x34], 2
mov dword [esp + 0x140], edx
lea edx, [esp + 0x20]
mov dword [esp + 0x144], 1
mov dword [esp + 0x148], edi
mov dword [esp + 0x10c], edx
lea edx, [esp + 0x140]
mov dword [esp + 0x110], 0x103986f0
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], 0x10061ca0
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], 0x100d6990
call fcn.1010a850
mov edx, dword [esp + 0xf0]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0x1b8], esi
lea eax, [edx + ecx*4 - 0xc]
mov dword [esp + 0x1bc], eax
mov ecx, dword [edx + ecx*4 - 4]
test ecx, ecx
je 0x10067e55
mov esi, dword [esp + 0x64]
lea ebx, [esp + 0xc0]
lea edx, [edx + esi*4 - 4]
jmp 0x10067b4c
mov esi, dword [esp + 0x10]
cmp eax, 1
je 0x1006778d
call sub.KERNEL32.dll_GetProcessHeap
push 0xc
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10069773
mov ecx, 0x103801ad
mov edx, 0x14
mov dword [eax], 0
mov edi, eax
mov byte [eax + 8], 4
call fcn.1004c900
mov esi, dword [edi]
mov dword [esp + 8], eax
mov dword [esp], edi
test esi, esi
je 0x1006940a
mov ebx, dword [edi + 4]
push esi
call dword [ebx]
add esp, 4
cmp dword [ebx + 4], 0
je 0x1006940a
cmp dword [ebx + 8], 9
jae 0x100693f7
call sub.KERNEL32.dll_GetProcessHeap
push esi
jmp 0x100693ff
mov edx, dword [ecx + 0x2c]
mov esi, dword [ecx + 0x34]
mov edi, dword [ecx + 0x38]
mov dword [esp + 0x108], 0
mov dword [esp + 0x20], 0x1039ea70
mov dword [esp + 0x10c], edx
lea edx, [esp + 0x140]
mov dword [esp + 0x110], eax
lea eax, [ecx + 0x2c]
mov dword [esp + 0x114], esi
mov dword [esp + 0x118], edi
mov dword [esp + 0x134], edx
lea edx, [esp + 0x1b8]
mov dword [esp + 0x138], 1
mov dword [esp + 0x13c], eax
mov dword [esp + 0x164], edx
mov dword [esp + 0x168], 0x10077710
lea esi, [esp + 0x108]
lea edx, [esp + 0x20]
lea eax, [esp + 0x164]
mov dword [esp + 0x24], 1
mov dword [esp + 0x28], 0
mov dword [esp + 0x140], esi
mov dword [esp + 0x144], edx
lea edx, [esp + 0x134]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], 1
mov dword [esp + 0x148], 0x103986f0
call fcn.1010a850
nop word cs:[eax + eax]
mov ecx, ebx
call fcn.100600d0
mov eax, dword [esp + 0x1bc]
mov ecx, dword [eax + 8]
lea edx, [eax + 8]
test ecx, ecx
je 0x10067e55
dec ecx
mov dword [edx], ecx
lea ecx, [ecx + ecx*2]
mov edx, dword [eax]
shl ecx, 4
mov eax, dword [edx + ecx + 0x18]
mov dword [esp + 0x98], eax
movsd xmm0, qword [edx + ecx + 0x10]
movsd qword [esp + 0x90], xmm0
movsd xmm0, qword [edx + ecx]
movq xmm1, qword [edx + ecx + 8]
movq qword [esp + 0x88], xmm1
movsd qword [esp + 0x80], xmm0
movsd xmm0, qword [edx + ecx + 0x28]
mov eax, dword [edx + ecx + 0x1c]
movsd qword [esp + 0x1a8], xmm0
cmp eax, 2
movq xmm0, qword [edx + ecx + 0x20]
movq qword [esp + 0x1a0], xmm0
je 0x10067e55
movsd xmm1, qword [esp + 0x88]
mov ecx, dword [esp + 0x98]
movq xmm0, qword [esp + 0x90]
movq xmm3, qword [esp + 0x80]
movq xmm2, qword [esp + 0x1a0]
cmp eax, 1
movsd qword [esp + 0xb8], xmm1
movq xmm1, qword [esp + 0x1a8]
mov dword [esp + 0xc8], ecx
movq qword [esp + 0xc0], xmm0
movq qword [esp + 0xb0], xmm3
mov dword [esp + 0xcc], eax
movq qword [ebx + 0x10], xmm2
movq qword [ebx + 0x18], xmm1
mov eax, dword [esp + 0xd0]
mov eax, dword [eax + 8]
jne 0x10067da1
cmp eax, 3
je 0x10067daa
mov eax, dword [esp + 0x170]
xor eax, 1
or eax, dword [esp + 0x174]
jne 0x10068e50
mov eax, dword [esp + 0xb4]
mov edi, dword [esp + 0xb8]
mov ebx, dword [esp + 0xb0]
mov esi, dword [esp + 0x178]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x17c]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x180]
mov dword [esp], eax
call fcn.100fe340
mov dword [esp + 0x140], eax
mov eax, dword [esp + 4]
mov dword [esp + 0x144], edx
mov dword [esp + 0x148], ecx
mov dword [esp + 0x108], ebx
lea ecx, [esp + 0x20]
lea edx, [esp + 0x140]
mov dword [esp + 0x10c], eax
lea eax, [esp + 0x108]
mov dword [esp + 0x110], edi
push eax
call fcn.100fe5f0
add esp, 4
mov eax, dword [esp + 0x20]
xor eax, 1
or eax, dword [esp + 0x24]
jne 0x100697bd
mov ecx, dword [esp + 0x28]
mov edi, dword [esp + 0x2c]
mov ebx, dword [esp + 8]
mov dword [esp + 4], esi
xor eax, eax
mov edx, ecx
xor edx, esi
mov esi, edi
xor esi, ebx
or esi, edx
mov esi, dword [esp]
mov edx, 0xff
setne al
cmp ecx, dword [esp + 4]
sbb edi, ebx
lea ebx, [esp + 0xc0]
cmovb eax, edx
xor ecx, ecx
cmp dword [esp + 0x30], esi
setne cl
cmovb ecx, edx
test al, al
cmovne ecx, eax
cmp cl, 1
jne 0x10068e50
mov eax, dword [0x10551ebc]
cmp eax, 5
jb 0x10067d47
mov eax, dword [0x10551ec0]
mov eax, dword [0x10411958]
dec eax
cmp eax, 5
jb 0x10067b30
mov ecx, dword [0x104112e4]
test ecx, ecx
je 0x10067b30
mov al, 1
cmp ecx, 1
je 0x10067d76
cmp ecx, 2
jne 0x10067e3e
mov al, 2
movzx edx, al
mov ecx, 0x104112e4
call fcn.10109ff0
test al, al
je 0x10067b30
mov ecx, dword [0x104112e8]
mov eax, dword [ecx + 0x30]
test eax, eax
jne 0x10067a5f
jmp 0x10069812
cmp eax, 1
je 0x10067c3c
mov eax, dword [0x10551ebc]
cmp eax, 5
jb 0x10067db9
mov eax, dword [0x10551ec0]
mov eax, dword [0x10411958]
dec eax
cmp eax, 5
jb 0x10067b30
mov ecx, dword [0x104112d8]
test ecx, ecx
je 0x10067b30
mov al, 1
cmp ecx, 1
je 0x10067de4
cmp ecx, 2
jne 0x10067e2b
mov al, 2
movzx edx, al
mov ecx, 0x104112d8
call fcn.10109ff0
test al, al
je 0x10067b30
mov ecx, dword [0x104112dc]
mov eax, dword [ecx + 0x30]
test eax, eax
je 0x10069823
mov edx, dword [ecx + 0x2c]
mov esi, dword [ecx + 0x34]
mov edi, dword [ecx + 0x38]
mov dword [esp + 0x108], 0
mov dword [esp + 0x20], 0x1039ea58
jmp 0x10067a7b
mov ecx, 0x104112d8
call fcn.10109f40
test al, al
jne 0x10067de4
jmp 0x10067b30
mov ecx, 0x104112e4
call fcn.10109f40
test al, al
jne 0x10067d76
jmp 0x10067b30
mov cl, 1
mov dword [esp + 0xcc], 2
lea eax, [esp + 0x80]
mov dword [esp + 0x78], 2
mov dword [esp + 0x1f0], 0
mov dword [esp + 0x190], ecx
mov cl, 1
mov edx, dword [esp + 0xc]
movq xmm2, qword [eax]
test cl, cl
movsd xmm1, qword [edx + 8]
movq xmm0, qword [edx]
movq qword [esp + 0x1a0], xmm2
movsd qword [esp + 0x110], xmm1
movsd xmm1, qword [edx + 0x10]
mov edx, dword [edx + 0x18]
movq qword [esp + 0x108], xmm0
movsd qword [esp + 0x118], xmm1
movq xmm1, qword [eax + 8]
mov dword [esp + 0x120], edx
movq qword [esp + 0x1a8], xmm1
je 0x100682c9
mov esi, dword [esp + 0x1c]
mov eax, dword [esi + 0x30]
mov ecx, dword [esi + 0x34]
mov edx, dword [esi + 0x38]
mov esi, dword [esi + 0x3c]
mov edi, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], esi
xor eax, 0x6e657261
xor edi, 0x70736575
mov dword [esp + 0x30], edi
mov edi, ecx
xor ecx, 0x6c796765
xor edi, 0x736f6d65
mov dword [esp + 0x34], edi
mov dword [esp + 0x3c], ecx
mov ecx, esi
mov dword [esp + 0x38], eax
mov eax, edx
xor edx, 0x79746573
xor esi, 0x74656462
xor ecx, 0x646f7261
xor eax, 0x6e646f6d
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x40], eax
mov dword [esp + 0x48], edx
lea edx, [esp + 0x20]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
call fcn.10062430
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x4c]
mov edi, dword [esp + 0x50]
mov esi, dword [esp + 0x48]
mov eax, dword [esp + 0x40]
mov ebx, dword [esp + 0x34]
shl edx, 0x18
xor esi, edi
mov dword [esp + 0x6c], edi
mov edi, eax
or edx, dword [esp + 0x54]
mov dword [esp + 0x64], edx
xor ecx, edx
mov edx, dword [esp + 0x30]
add edx, eax
mov dword [esp + 4], edx
mov edx, dword [esp + 0x44]
adc ebx, edx
shld edi, edx, 0xd
shld edx, eax, 0xd
mov eax, dword [esp + 0x38]
mov dword [esp + 8], ebx
xor edx, ebx
mov ebx, dword [esp + 4]
xor edi, ebx
add eax, esi
mov dword [esp], eax
mov eax, dword [esp + 0x3c]
adc eax, ecx
mov dword [esp + 0xf0], eax
mov eax, esi
shrd esi, ecx, 0x10
shld eax, ecx, 0x10
xor esi, dword [esp + 0xf0]
xor eax, dword [esp]
add dword [esp + 8], eax
mov ecx, eax
adc ebx, esi
shld ecx, esi, 0x15
shrd eax, esi, 0xb
mov esi, edi
xor eax, ebx
xor ecx, dword [esp + 8]
add dword [esp], edi
adc dword [esp + 0xf0], edx
shld esi, edx, 0x11
shrd edi, edx, 0xf
mov edx, ebx
mov ebx, dword [esp + 0x6c]
mov dword [esp + 0x6c], 0x10
xor esi, dword [esp]
xor edx, dword [esp + 0x64]
xor dword [esp + 8], ebx
mov ebx, dword [esp + 0xf0]
xor edi, ebx
xor ebx, 0xff
add dword [esp + 8], esi
adc edx, edi
mov dword [esp + 4], edx
mov edx, esi
shrd esi, edi, 0x13
shld edx, edi, 0xd
xor esi, dword [esp + 4]
mov edi, ecx
xor edx, dword [esp + 8]
add ebx, ecx
adc dword [esp], eax
shld edi, eax, 0x10
shrd ecx, eax, 0x10
xor edi, ebx
xor ecx, dword [esp]
add dword [esp + 4], edi
mov eax, edi
adc dword [esp + 8], ecx
shld eax, ecx, 0x15
shrd edi, ecx, 0xb
mov ecx, edx
xor edi, dword [esp + 8]
xor eax, dword [esp + 4]
add ebx, edx
adc dword [esp], esi
shld ecx, esi, 0x11
shrd edx, esi, 0xf
xor ecx, ebx
xor edx, dword [esp]
add dword [esp + 4], ecx
mov esi, ecx
adc dword [esp + 8], edx
shld esi, edx, 0xd
shrd ecx, edx, 0x13
mov edx, eax
xor ecx, dword [esp + 8]
xor esi, dword [esp + 4]
add dword [esp], eax
adc ebx, edi
shld edx, edi, 0x10
shrd eax, edi, 0x10
xor edx, dword [esp]
xor eax, ebx
add dword [esp + 8], edx
mov edi, edx
adc dword [esp + 4], eax
shld edi, eax, 0x15
shrd edx, eax, 0xb
mov eax, esi
xor edx, dword [esp + 4]
xor edi, dword [esp + 8]
add dword [esp], esi
adc ebx, ecx
shld eax, ecx, 0x11
shrd esi, ecx, 0xf
xor eax, dword [esp]
xor esi, ebx
add dword [esp + 8], eax
mov ecx, eax
adc dword [esp + 4], esi
shld ecx, esi, 0xd
shrd eax, esi, 0x13
mov esi, edi
xor ecx, dword [esp + 8]
xor eax, dword [esp + 4]
add ebx, edi
adc dword [esp], edx
shld esi, edx, 0x10
shrd edi, edx, 0x10
mov edx, dword [esp]
xor esi, ebx
xor edi, edx
shld esi, edi, 0x15
add ebx, ecx
adc edx, eax
shrd eax, ecx, 0xf
mov ecx, dword [esp + 0x1c]
xor eax, esi
xor eax, edx
xor eax, ebx
mov ebx, dword [ecx + 0x40]
mov esi, dword [ecx + 0x44]
mov ecx, ebx
mov dword [esp], esi
and ecx, eax
shr eax, 0x19
movd xmm0, eax
movdqu xmm1, xmmword [esi + ecx]
lea edx, [ecx + 0x10]
mov dword [esp + 8], ecx
punpcklbw xmm0, xmm0
and edx, ebx
pshuflw xmm0, xmm0, 0xe0
mov dword [esp + 4], edx
pshufd xmm0, xmm0, 0
movdqa xmmword [esp + 0x220], xmm0
pcmpeqb xmm0, xmm1
movdqa xmmword [esp + 0xf0], xmm1
pcmpeqd xmm1, xmm1
pmovmskb edi, xmm0
test di, di
je 0x10068267
mov eax, edi
mov ecx, dword [esp + 0x10]
lea edi, [eax - 1]
and edi, eax
bsf ax, ax
movzx eax, ax
add eax, dword [esp + 8]
and eax, ebx
neg eax
lea esi, [eax + eax*8]
mov eax, dword [esp]
lea edx, [eax + esi*4 - 0x24]
mov dword [esp + 0x64], edx
call fcn.100354f0
pcmpeqd xmm1, xmm1
test al, al
je 0x100681a1
mov eax, dword [esp + 0x10]
mov edx, esi
mov esi, dword [esp]
mov eax, dword [eax + 0xc]
cmp eax, dword [esi + edx*4 - 0x18]
jne 0x100681a1
mov dword [esp + 0x208], ebx
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp]
mov dword [esp + 0x204], edi
mov dword [esp + 0x20c], edx
xor esi, esi
mov edi, dword [ecx + 8]
mov edx, dword [ebx + edx*4 - 0x1c]
nop
cmp eax, esi
je 0x10068560
movzx ecx, byte [edi + esi]
mov bh, byte [edx + esi]
inc esi
mov bl, cl
add bl, 0xbf
cmp bl, 0x1a
setb ch
shl ch, 5
or ch, cl
mov cl, bh
add cl, 0xbf
cmp cl, 0x1a
setb cl
shl cl, 5
or cl, bh
cmp ch, cl
je 0x10068220
mov ebx, dword [esp + 0x208]
mov edi, dword [esp + 0x204]
jmp 0x100681a1
movdqa xmm0, xmmword [esp + 0xf0]
mov ecx, dword [esp + 4]
pcmpeqb xmm0, xmm1
pmovmskb eax, xmm0
test ax, ax
jne 0x100682c1
mov edx, dword [esp + 0x6c]
movdqa xmm0, xmmword [esp + 0x220]
mov dword [esp + 8], ecx
lea eax, [ecx + edx + 0x10]
add edx, 0x10
mov dword [esp + 0x6c], edx
mov edx, dword [esp]
and eax, ebx
mov dword [esp + 4], eax
movdqu xmm2, xmmword [edx + ecx]
pcmpeqb xmm0, xmm2
movdqa xmmword [esp + 0xf0], xmm2
pmovmskb edi, xmm0
jmp 0x100681a1
mov byte [esp + 0x80], 3
cmp byte [esp + 0x190], 0
je 0x10069013
mov eax, dword [esp + 0x14]
cmp dword [eax], 0
jne 0x10069013
call sub.KERNEL32.dll_GetProcessHeap
push 0x44
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x100697e6
mov dword [eax], 1
mov edx, eax
mov dword [eax + 4], 1
mov eax, dword [esp + 0x68]
mov dword [edx + 8], eax
mov eax, dword [esp + 0x70]
mov dword [edx + 0xc], eax
mov al, byte [esp + 0x74]
mov byte [edx + 0x10], al
mov al, byte [esp + 0x18]
mov byte [edx + 0x11], al
movzx eax, word [esp + 0x60]
mov word [edx + 0x12], ax
mov eax, dword [esp + 0xe8]
mov dword [edx + 0x14], 2
mov dword [edx + 0x18], eax
mov eax, dword [esp + 0x15c]
mov dword [edx + 0x1c], eax
mov al, byte [esp + 0x160]
mov byte [edx + 0x20], al
mov al, byte [esp + 0xec]
mov byte [edx + 0x21], al
movzx eax, word [esp + 0x7c]
mov word [edx + 0x22], ax
mov byte [edx + 0x24], 0
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x23]
mov dword [edx + 0x28], ecx
mov dword [edx + 0x25], eax
mov dword [edx + 0x2c], 0
mov byte [edx + 0x30], 0
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 0x83]
mov dword [edx + 0x31], eax
mov dword [edx + 0x34], ecx
mov dword [edx + 0x38], 0
mov byte [edx + 0x3c], 0
movzx eax, word [esp + 0x140]
mov word [edx + 0x3d], ax
mov al, byte [esp + 0x142]
mov byte [edx + 0x3f], al
mov byte [edx + 0x40], 0
movzx eax, word [esp + 0x134]
mov word [edx + 0x41], ax
mov al, byte [esp + 0x136]
mov byte [edx + 0x43], al
lock inc dword [edx]
mov esi, dword [esp + 0x10]
jle 0x100697e2
mov eax, dword [0x10551ebc]
cmp eax, 5
jb 0x100683ef
mov eax, dword [0x10551ec0]
mov eax, dword [0x10411958]
mov dword [esp + 0x74], edx
dec eax
cmp eax, 5
jb 0x1006850c
mov ecx, dword [0x10411350]
test ecx, ecx
je 0x1006850c
mov al, 1
cmp ecx, 1
je 0x10068422
cmp ecx, 2
jne 0x1006972e
mov al, 2
movzx edx, al
mov ecx, 0x10411350
call fcn.10109ff0
test al, al
je 0x1006850c
mov ecx, dword [0x10411354]
mov eax, dword [ecx + 0x30]
test eax, eax
je 0x10069852
mov edx, dword [ecx + 0x2c]
mov esi, dword [ecx + 0x34]
mov edi, dword [ecx + 0x38]
mov dword [esp + 0x80], 0
mov dword [esp + 0x20], 0x1039ea88
mov dword [esp + 0x24], 1
mov dword [esp + 0x28], 0
mov dword [esp + 0x84], edx
lea edx, [esp + 0x164]
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], esi
lea esi, [esp + 0x80]
mov dword [esp + 0x90], edi
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0xc]
mov dword [esp + 0x140], esi
lea esi, [esp + 0x140]
mov dword [esp + 0x34], 1
mov dword [esp + 0x134], esi
mov esi, dword [esp + 0x10]
mov dword [esp + 0x138], 1
mov dword [esp + 0x144], edx
lea edx, [ecx + 0x2c]
mov dword [esp + 0x148], 0x103986f0
mov dword [esp + 0x13c], edx
lea edx, [esp + 0x134]
mov dword [esp + 0x164], esi
mov dword [esp + 0x168], 0x10061ca0
call fcn.1010a850
movzx eax, byte [esi]
xor edi, edi
test eax, eax
je 0x10068708
cmp eax, 1
je 0x100686f6
call sub.KERNEL32.dll_GetProcessHeap
push 0x10
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10069834
mov ebx, dword [esp + 0x10]
mov esi, dword [ebx + 4]
mov ecx, dword [esi + 0xc]
lea edx, [esi + 8]
push dword [esi + 4]
push dword [esi]
push edx
mov dword [esp + 0xc], eax
push eax
call dword [ecx]
add esp, 0x10
mov eax, 2
jmp 0x1006870e
mov eax, dword [esp]
mov ecx, dword [esp + 0x20c]
mov esi, dword [esp + 0x1c]
pcmpeqd xmm1, xmm1
lea ecx, [eax + ecx*4]
mov eax, dword [esi + 0x44]
mov edx, eax
sub edx, ecx
sar edx, 2
imul edi, edx, 0x38e38e39
lea edx, [edi - 0x10]
movdqu xmm2, xmmword [eax + edi]
mov dword [esp], edi
mov di, 0x10
and edx, dword [esi + 0x40]
mov si, 0x10
pcmpeqb xmm2, xmm1
movdqu xmm0, xmmword [eax + edx]
pmovmskb ebx, xmm2
pcmpeqb xmm0, xmm1
pmovmskb ecx, xmm0
test cx, cx
je 0x100685bc
bsr si, cx
xor esi, 0xf
test bx, bx
je 0x100685c5
bsf di, bx
movzx edi, di
mov cl, 0x80
add edi, esi
mov esi, dword [esp + 0x1c]
cmp di, 0xf
ja 0x100685db
inc dword [esi + 0x48]
mov cl, 0xff
mov edi, dword [esp]
mov byte [eax + edi], cl
mov byte [edx + eax + 0x10], cl
dec dword [esi + 0x4c]
mov ecx, dword [esp + 0x64]
movsd xmm0, qword [ecx]
movq xmm1, qword [ecx + 8]
movsd qword [esp + 0x80], xmm0
mov eax, dword [ecx + 0x20]
mov dword [esp + 0xa0], eax
mov al, byte [esp + 0x80]
movsd xmm0, qword [ecx + 0x18]
cmp al, 3
movsd qword [esp + 0x98], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [esp + 0x88], xmm1
movq qword [esp + 0x90], xmm0
je 0x100682c9
mov ecx, dword [esp + 0x98]
mov ebx, dword [esp + 0x9c]
mov edi, dword [esp + 0xa0]
cmp al, 2
mov dword [esp], ecx
jb 0x1006867f
mov esi, dword [esp + 0x84]
mov eax, dword [esi + 0xc]
lea ecx, [esi + 8]
push dword [esi + 4]
push dword [esi]
push ecx
call dword [eax + 4]
add esp, 0xc
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x94]
lea ecx, [esp + 0x90]
push dword [esp + 0x8c]
push dword [esp + 0x8c]
push ecx
call dword [eax + 4]
add esp, 0xc
cmp dword [esp], 0
je 0x100682c9
test edi, edi
je 0x100686cb
mov eax, dword [esp]
shl edi, 4
lea edi, [edi + edi*2]
lea esi, [eax + 0x10]
mov ecx, esi
call fcn.100600d0
add esi, 0x30
add edi, 0xffffffd0
jne 0x100686bc
test ebx, ebx
je 0x100682c9
shl ebx, 4
lea eax, [ebx + ebx*2]
test eax, eax
je 0x100682c9
call sub.KERNEL32.dll_GetProcessHeap
push dword [esp]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
jmp 0x100682c9
mov ebx, dword [esp + 0x10]
mov eax, 1
movzx edi, byte [ebx + 1]
shl edi, 8
jmp 0x1006870e
mov ebx, dword [esp + 0x10]
xor eax, eax
mov esi, dword [esp + 0x1c]
or edi, eax
lea edx, [ebx + 0x10]
mov dword [esp + 0x140], edi
lea eax, [esi + 0x50]
mov dword [esp + 0x160], eax
mov eax, dword [esp]
mov dword [esp + 0x144], eax
lea eax, [esp + 0x148]
mov ecx, dword [ebx + 0x14]
push dword [ebx + 0xc]
push dword [ebx + 8]
push edx
push eax
call dword [ecx]
add esp, 0x10
movsd xmm0, qword [esp + 0x150]
movq xmm2, qword [esp + 0x140]
movsd xmm1, qword [esp + 0x148]
movsd qword [esp + 0x90], xmm0
movsd qword [esp + 0x88], xmm1
movq qword [esp + 0x80], xmm2
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0x54]
mov edx, dword [esi + 0x58]
mov esi, dword [esi + 0x5c]
mov edi, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], esi
xor eax, 0x6e657261
xor edi, 0x70736575
mov dword [esp + 0x30], edi
mov edi, ecx
xor ecx, 0x6c796765
xor edi, 0x736f6d65
mov dword [esp + 0x34], edi
mov dword [esp + 0x38], eax
mov eax, edx
mov dword [esp + 0x3c], ecx
mov ecx, esi
xor edx, 0x79746573
xor esi, 0x74656462
xor eax, 0x6e646f6d
xor ecx, 0x646f7261
mov dword [esp + 0x44], ecx
mov dword [esp + 0x40], eax
mov dword [esp + 0x48], edx
lea ecx, [esp + 0x80]
lea edx, [esp + 0x20]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x58], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x54], 0
call fcn.10062430
mov edx, dword [esp + 0x58]
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x50]
mov ebx, dword [esp + 0x48]
mov edi, dword [esp + 0x44]
pcmpeqd xmm2, xmm2
mov dword [esp + 0x6c], 0x10
shl edx, 0x18
mov dword [esp + 8], eax
xor ebx, esi
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x34]
or edx, dword [esp + 0x54]
mov dword [esp + 4], edx
xor ecx, edx
mov edx, dword [esp + 0x30]
add edx, eax
mov eax, dword [esp + 8]
mov dword [esp + 0xc], edx
mov edx, dword [esp + 8]
adc esi, edi
mov dword [esp], esi
shld eax, edi, 0xd
shld edi, edx, 0xd
mov edx, dword [esp + 0xc]
xor edi, esi
mov esi, dword [esp + 0x3c]
xor eax, edx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x38]
add eax, ebx
mov dword [esp + 8], eax
mov eax, ebx
adc esi, ecx
shrd ebx, ecx, 0x10
shld eax, ecx, 0x10
xor ebx, esi
xor eax, dword [esp + 8]
add dword [esp], eax
mov ecx, eax
adc edx, ebx
shrd eax, ebx, 0xb
shld ecx, ebx, 0x15
xor eax, edx
xor ecx, dword [esp]
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x60]
add dword [esp + 8], eax
mov ebx, eax
adc esi, edi
shld ebx, edi, 0x11
shrd eax, edi, 0xf
mov edi, edx
mov edx, dword [esp + 0x18]
mov dword [esp + 0xf0], ebx
xor eax, esi
xor edi, dword [esp + 4]
xor esi, 0xff
mov ebx, dword [esp + 0xf0]
mov dword [esp + 4], esi
xor dword [esp], edx
mov edx, ecx
xor ebx, dword [esp + 8]
add dword [esp], ebx
mov esi, ebx
adc edi, eax
shrd ebx, eax, 0x13
shld esi, eax, 0xd
mov eax, dword [esp + 0x68]
xor ebx, edi
mov dword [esp + 0xc], edi
mov edi, dword [esp + 8]
xor esi, dword [esp]
mov dword [esp + 0xf0], ebx
mov ebx, dword [esp + 4]
add ebx, ecx
adc edi, eax
shld edx, eax, 0x10
shrd ecx, eax, 0x10
mov dword [esp + 4], ebx
xor edx, ebx
mov ebx, dword [esp + 0xc]
xor ecx, edi
mov dword [esp + 8], edi
mov edi, dword [esp]
mov eax, edx
add ebx, edx
adc edi, ecx
shld eax, ecx, 0x15
shrd edx, ecx, 0xb
mov ecx, ebx
mov dword [esp + 0xc], ebx
mov ecx, esi
xor eax, ebx
xor edx, edi
mov dword [esp], edi
add dword [esp + 4], esi
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0xf0]
adc edi, ebx
shrd esi, ebx, 0xf
shld ecx, ebx, 0x11
mov dword [esp + 8], edi
xor esi, edi
mov edi, dword [esp + 4]
xor ecx, edi
add dword [esp + 0xc], ecx
mov ebx, ecx
adc dword [esp], esi
shrd ecx, esi, 0x13
shld ebx, esi, 0xd
mov esi, dword [esp + 0xc]
xor ecx, dword [esp]
xor ebx, esi
add dword [esp + 8], eax
adc edi, edx
mov dword [esp + 4], edi
mov edi, eax
shrd eax, edx, 0x10
shld edi, edx, 0x10
xor eax, dword [esp + 4]
xor edi, dword [esp + 8]
add dword [esp], edi
mov edx, edi
adc esi, eax
shld edx, eax, 0x15
shrd edi, eax, 0xb
mov eax, dword [esp + 4]
xor edi, esi
xor edx, dword [esp]
add dword [esp + 8], ebx
mov dword [esp + 0xc], esi
mov esi, ebx
adc eax, ecx
shld esi, ecx, 0x11
shrd ebx, ecx, 0xf
mov ecx, dword [esp]
xor esi, dword [esp + 8]
xor ebx, eax
mov dword [esp + 4], eax
add ecx, esi
mov eax, esi
adc dword [esp + 0xc], ebx
shld eax, ebx, 0xd
shrd esi, ebx, 0x13
mov ebx, dword [esp + 8]
xor eax, ecx
xor esi, dword [esp + 0xc]
add dword [esp + 4], edx
mov ecx, edx
adc ebx, edi
shrd edx, edi, 0x10
shld ecx, edi, 0x10
mov edi, dword [esp + 4]
xor edx, ebx
xor ecx, edi
shld ecx, edx, 0x15
mov edx, dword [esp + 0x1c]
add edi, eax
adc ebx, esi
shrd esi, eax, 0xf
xor esi, ecx
xor esi, ebx
mov ecx, dword [edx + 0x60]
xor esi, edi
mov eax, esi
shr eax, 0x19
movd xmm0, eax
mov dword [esp + 0x15c], eax
mov al, byte [esp + 0x80]
mov ebx, ecx
mov dword [esp + 0xc], ecx
punpcklbw xmm0, xmm0
and ebx, esi
pshuflw xmm0, xmm0, 0xe0
lea edi, [ebx + 0x10]
pshufd xmm0, xmm0, 0
mov dword [esp + 0xf0], ebx
and edi, ecx
mov ecx, dword [edx + 0x64]
mov byte [esp + 0x18], al
mov al, byte [esp + 0x81]
movdqa xmm3, xmm0
mov dword [esp + 0xec], edi
mov edi, edx
movdqu xmm1, xmmword [ecx + ebx]
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0x84]
lea ebx, [edi + 0x60]
mov edi, dword [esp + 0x88]
mov byte [esp + 0xe8], al
mov dword [esp + 0x64], ebx
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x8c]
pcmpeqb xmm3, xmm1
mov dword [esp + 8], edi
pmovmskb edx, xmm3
mov dword [esp], ecx
test dx, dx
je 0x10068b2b
mov eax, edx
lea edx, [eax - 1]
and edx, eax
bsf ax, ax
movzx eax, ax
add eax, dword [esp + 0xf0]
and eax, dword [esp + 0xc]
neg eax
lea ecx, [eax + eax*4]
mov eax, dword [esp + 4]
movzx eax, byte [eax + ecx*8 - 0x28]
cmp eax, 1
je 0x10068bef
cmp eax, 2
je 0x10068b7e
test eax, eax
je 0x100697d6
cmp byte [esp + 0x18], 0
jne 0x10068add
jmp 0x100697d6
mov ecx, dword [esp + 0xec]
pcmpeqb xmm1, xmm2
pmovmskb eax, xmm1
test ax, ax
jne 0x10068c93
mov edx, dword [esp + 0x6c]
movdqa xmm3, xmm0
mov dword [esp + 0xf0], ecx
lea eax, [ecx + edx + 0x10]
add edx, 0x10
mov dword [esp + 0x6c], edx
mov edx, dword [esp + 4]
and eax, dword [esp + 0xc]
movdqu xmm1, xmmword [edx + ecx]
mov dword [esp + 0xec], eax
pcmpeqb xmm3, xmm1
pmovmskb edx, xmm3
jmp 0x10068add
mov al, byte [esp + 0x18]
cmp al, 2
jne 0x10068bf7
mov eax, dword [esp + 4]
mov dword [esp + 0x7c], ecx
mov eax, dword [eax + ecx*8 - 0x24]
mov ecx, dword [esp + 0x60]
mov edi, dword [eax + 4]
cmp edi, dword [ecx + 4]
jne 0x10068add
mov eax, dword [eax]
xor ecx, ecx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x60]
mov eax, dword [eax]
mov dword [esp + 0x70], eax
cmp edi, ecx
je 0x10068c34
mov eax, dword [esp + 0x68]
mov ebx, dword [esp + 0x70]
movzx eax, byte [eax + ecx]
mov bh, byte [ebx + ecx]
inc ecx
mov bl, al
add bl, 0xbf
cmp bl, 0x1a
setb ah
shl ah, 5
or ah, al
mov al, bh
add al, 0xbf
cmp al, 0x1a
setb al
shl al, 5
or al, bh
cmp ah, al
je 0x10068bb4
jmp 0x10068add
mov al, byte [esp + 0x18]
cmp al, 1
je 0x10068c04
test al, al
jne 0x10068add
jmp 0x100697d6
mov eax, dword [esp + 4]
mov dword [esp + 0x7c], ecx
lea eax, [eax + ecx*8 - 0x28]
cmp byte [eax + 1], 1
jne 0x10068c26
cmp byte [esp + 0xe8], 0
je 0x10068add
jmp 0x10068c34
cmp byte [esp + 0xe8], 0
jne 0x10068add
mov eax, dword [esp]
mov ecx, dword [esp + 4]
mov edi, dword [esp + 0x7c]
cmp dword [ecx + edi*8 - 0x1c], eax
jne 0x10068add
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x7c]
mov edi, dword [eax + ecx*8 - 0x20]
xor ecx, ecx
cmp dword [esp], ecx
je 0x100694d5
movzx eax, byte [edi + ecx]
mov ebx, dword [esp + 8]
mov ah, al
mov bh, byte [ebx + ecx]
inc ecx
add ah, 0xbf
cmp ah, 0x1a
setb ah
shl ah, 5
or ah, al
mov al, bh
add al, 0xbf
cmp al, 0x1a
setb al
shl al, 5
or al, bh
cmp ah, al
je 0x10068c57
jmp 0x10068add
mov eax, dword [esp + 0x160]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x134], eax
cmp dword [edi + 0x68], 0
je 0x100694af
mov eax, dword [esp + 0x80]
mov dword [esp + 0x68], eax
mov al, byte [esp + 0x89]
mov byte [esp + 0xf0], al
movzx eax, word [esp + 0x8a]
mov word [esp + 0x18], ax
mov eax, dword [esp + 0x90]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0xc], eax
call sub.KERNEL32.dll_GetProcessHeap
push 0x20
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
mov dword [esp + 0x70], eax
je 0x100697ed
mov edx, dword [edi + 0x60]
mov ecx, dword [edi + 0x64]
xor edi, edi
nop
mov ebx, esi
and ebx, edx
movdqu xmm0, xmmword [ecx + ebx]
lea esi, [edi + ebx + 0x10]
add edi, 0x10
pmovmskb eax, xmm0
test ax, ax
je 0x10068d10
bsf ax, ax
movzx eax, ax
add ebx, eax
and ebx, edx
mov al, byte [ecx + ebx]
test al, al
jns 0x1006975c
mov edi, dword [esp + 0x1c]
and al, 1
neg al
movsx eax, al
add dword [edi + 0x68], eax
lea eax, [ebx - 0x10]
and eax, edx
mov edx, dword [esp + 0x15c]
mov esi, dword [esp + 4]
mov byte [ecx + ebx], dl
mov byte [eax + ecx + 0x10], dl
mov edx, dword [esp + 0x68]
neg ebx
lea eax, [ebx + ebx*4]
mov ebx, dword [esp]
mov dword [ecx + eax*8 - 0x28], edx
mov edx, dword [esp + 0x60]
mov dword [ecx + eax*8 - 0x24], edx
mov edx, dword [esp + 8]
mov byte [ecx + eax*8 - 0x20], dl
mov dl, byte [esp + 0xf0]
mov byte [ecx + eax*8 - 0x1f], dl
movzx edx, word [esp + 0x18]
mov word [ecx + eax*8 - 0x1e], dx
mov dword [ecx + eax*8 - 0x1c], ebx
mov dword [ecx + eax*8 - 0x18], esi
mov ebx, dword [esp + 0xc]
mov esi, dword [esp + 0x70]
mov dword [ecx + eax*8 - 0x14], ebx
mov dword [ecx + eax*8 - 0x10], 0
mov dword [ecx + eax*8 - 0xc], 0
mov dword [ecx + eax*8 - 8], esi
mov dword [ecx + eax*8 - 4], 8
inc dword [edi + 0x6c]
lea esi, [ecx + eax*8 - 0x10]
mov eax, dword [esi + 4]
mov edx, dword [esi + 0xc]
mov edi, eax
lea ecx, [edx - 1]
sub edi, dword [esi]
and edi, ecx
sub edx, edi
cmp edx, 1
jne 0x10068df4
mov ecx, esi
call fcn.100d75a0
mov ecx, dword [esi + 0xc]
mov eax, dword [esi + 4]
dec ecx
lea edx, [eax + 1]
mov edi, dword [esp + 0x74]
and edx, ecx
mov dword [esi + 4], edx
mov ecx, dword [esi + 8]
mov dword [ecx + eax*4], edi
mov al, byte [edi + 0x40]
test al, al
jne 0x10068ee6
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov ecx, dword [eax + 4]
push dword [eax]
call dword [ecx]
add esp, 4
mov cl, 1
mov esi, eax
mov ebx, edx
xchg byte [edi + 0x30], cl
test cl, cl
je 0x10068ec0
push esi
call dword [ebx + 0xc]
add esp, 4
jmp 0x10068ee6
call fcn.100faaa0
xor al, 1
mov dword [esp + 0x16c], eax
jmp 0x10066df8
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0xc4]
mov bl, byte [esp + 0xc8]
mov bh, byte [esp + 0xc9]
movzx eax, word [esp + 0xca]
mov edi, dword [esp + 0xd0]
mov esi, dword [esp + 0xd4]
cmp dword [esp + 0xcc], 1
mov word [esp + 0x60], ax
mov byte [esp + 0x74], bl
mov byte [esp + 0x18], bh
mov dword [esp + 0x68], ecx
mov dword [esp + 0x70], edx
mov dword [esp], esi
mov dword [esp + 8], edi
jne 0x10069499
test ecx, ecx
je 0x1006957f
push ecx
call dword [edx + 0xc]
add esp, 4
jmp 0x10069581
mov eax, dword [edi + 0x2c]
test eax, eax
je 0x10068ed0
push dword [edi + 0x28]
call dword [eax + 0xc]
add esp, 4
mov dword [edi + 0x28], esi
mov dword [edi + 0x2c], ebx
xor eax, eax
xchg byte [edi + 0x30], al
mov al, byte [edi + 0x40]
test al, al
je 0x100694cc
mov al, 1
xchg byte [edi + 0x24], al
test al, al
jne 0x100697f9
mov dl, byte [edi + 0x10]
mov eax, dword [edi + 8]
mov esi, dword [edi + 0xc]
movzx ecx, word [edi + 0x12]
mov bh, byte [edi + 0x11]
mov byte [esp + 4], dl
mov edx, dword [edi + 0x14]
mov dword [esp], eax
mov dword [esp + 8], esi
mov word [esp + 0xc], cx
mov dword [edi + 0x14], 2
cmp edx, 2
je 0x100697f4
mov eax, dword [edi + 0x20]
mov esi, dword [esp]
mov ecx, dword [edi + 0x1c]
mov bl, byte [esp + 4]
mov dword [esp + 0xf0], eax
mov eax, dword [edi + 0x18]
mov dword [esp + 0x20], esi
mov esi, dword [esp + 8]
mov dword [esp + 0x24], esi
mov byte [esp + 0x28], bl
mov byte [esp + 0x29], bh
movzx ebx, word [esp + 0xc]
mov word [esp + 0x2a], bx
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x34], ecx
mov dword [esp + 0x38], eax
xor eax, eax
xchg byte [edi + 0x24], al
mov ebx, dword [esp + 0x2c]
test bl, 2
jne 0x10068f89
lea ecx, [esp + 0x20]
call fcn.100600d0
mov ecx, dword [esp + 0x14]
cmp ebx, 3
jne 0x100697f9
mov esi, dword [ecx]
test esi, esi
je 0x10069011
mov al, 1
mov bl, 1
xchg byte [esi + 0x40], al
mov al, 1
xchg byte [esi + 0x30], al
test al, al
jne 0x10068fd1
mov eax, dword [esi + 0x28]
mov edi, dword [esi + 0x2c]
xor edx, edx
mov dword [esi + 0x2c], 0
xchg byte [esi + 0x30], dl
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x10068fd1
push eax
call dword [edi + 0xc]
mov ecx, dword [esp + 0x18]
add esp, 4
xchg byte [esi + 0x3c], bl
test bl, bl
jne 0x10068ffd
mov eax, dword [esi + 0x34]
mov edi, dword [esi + 0x38]
xor edx, edx
mov dword [esi + 0x38], 0
xchg byte [esi + 0x3c], dl
mov ecx, dword [esp + 0x14]
test edi, edi
je 0x10068ffd
push eax
call dword [edi + 4]
mov ecx, dword [esp + 0x18]
add esp, 4
mov eax, dword [ecx]
lock dec dword [eax]
mov edi, dword [esp + 0x74]
jne 0x10069011
call fcn.10062360
mov ecx, dword [esp + 0x14]
mov dword [ecx], edi
movsd xmm1, qword [esp + 0x110]
mov ecx, dword [esp + 0x1f0]
mov eax, dword [esp + 0x120]
cmp dword [esp + 0xcc], 2
movsd xmm0, qword [esp + 0x118]
movsd xmm3, qword [esp + 0x108]
movsd xmm2, qword [esp + 0x1a0]
movsd qword [esp + 0x1c8], xmm1
movsd xmm1, qword [esp + 0x1a8]
mov dword [esp + 0x1d8], eax
setne al
not cl
movsd qword [esp + 0x1d0], xmm0
movsd qword [esp + 0x1c0], xmm3
movsd qword [esp + 0x210], xmm2
test cl, al
movsd qword [esp + 0x218], xmm1
je 0x1006909f
lea ecx, [esp + 0xc0]
call fcn.100600d0
cmp byte [esp + 0x16c], 0
mov esi, dword [esp + 0x1c]
jne 0x100690ba
mov eax, dword [0x10551f14]
test eax, eax
jne 0x10069483
mov eax, dword [esp + 0x1b0]
mov esi, dword [eax]
mov eax, dword [0x10551f24]
mov edi, dword [esp + 0x10]
test eax, eax
je 0x100690e5
cmp eax, 0x100f3390
jne 0x1006910a
mov eax, dword [esi]
mov byte [eax + 0x18], 0
push eax
call sub.KERNEL32.dll_LeaveCriticalSection
jmp 0x10069134
mov ecx, 0x103a03b9
mov edx, 0x17
call fcn.100f2fc0
test eax, eax
mov eax, 0x100f3390
cmovne eax, edx
mov dword [0x10551f24], eax
cmp eax, 0x100f3390
je 0x100690d7
mov eax, dword [0x10551f3c]
test eax, eax
jne 0x10069131
mov ecx, str.ReleaseSRWLockExclusive
mov edx, 0x17
call fcn.100f2fc0
test eax, eax
mov eax, 0x100f51d0
cmovne eax, edx
mov dword [0x10551f3c], eax
push esi
call eax
movsd xmm1, qword [esp + 0x1c8]
movsd xmm0, qword [esp + 0x1c0]
mov eax, dword [esp + 0x1d8]
movsd xmm2, qword [esp + 0x210]
cmp byte [esp + 0x190], 0
mov ecx, dword [esp + 0x78]
movsd qword [esp + 0x110], xmm1
movsd xmm1, qword [esp + 0x1d0]
movsd qword [esp + 0x108], xmm0
mov dword [esp + 0x120], eax
movsd qword [esp + 0x140], xmm2
movsd qword [esp + 0x118], xmm1
movsd xmm1, qword [esp + 0x218]
movsd qword [esp + 0x148], xmm1
je 0x10069227
mov dword [esp + 0x2c], 3
mov cl, 1
mov eax, 3
test cl, cl
jne 0x100692d0
mov ecx, dword [esp + 0xac]
movsd xmm1, qword [esp + 0x28]
movsd xmm2, qword [esp + 0x38]
movsd xmm0, qword [esp + 0x20]
mov eax, dword [esp + 0x58]
mov dword [ecx], 0
movsd qword [ecx + 0xc], xmm1
movsd xmm1, qword [esp + 0x30]
movsd qword [ecx + 0x1c], xmm2
movsd xmm2, qword [esp + 0x48]
movsd qword [ecx + 4], xmm0
mov dword [ecx + 0x3c], eax
movsd qword [ecx + 0x14], xmm1
movsd xmm1, qword [esp + 0x40]
movsd qword [ecx + 0x2c], xmm2
movsd qword [ecx + 0x24], xmm1
movsd xmm1, qword [esp + 0x50]
movsd qword [ecx + 0x34], xmm1
jmp 0x100693ef
mov eax, dword [esp + 0x120]
movsd xmm1, qword [esp + 0x108]
movsd xmm0, qword [esp + 0x118]
movsd xmm2, qword [esp + 0x110]
mov edx, dword [esp + 0x1b4]
mov dword [esp + 0x98], eax
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x148]
movsd qword [esp + 0x80], xmm1
movsd xmm1, qword [esp + 0x140]
movsd qword [esp + 0xb0], xmm0
mov dword [esp + 0xbc], ecx
lea ecx, [esp + 0x20]
movsd qword [esp + 0x90], xmm0
movsd qword [esp + 0x88], xmm2
mov dword [esp + 0xc8], eax
lea eax, [esp + 0xb0]
movsd qword [esp + 0xc0], xmm1
push eax
push edi
call fcn.100d6730
add esp, 8
mov eax, dword [esp + 0x2c]
cmp eax, 3
sete cl
test cl, cl
je 0x100691c1
mov ecx, dword [esp + 0x1b4]
cmp dword [ecx], 0
je 0x100692f7
mov ecx, dword [esp + 0xac]
mov dword [ecx], 2
cmp eax, 3
jne 0x100693e6
jmp 0x100693ef
call sub.KERNEL32.dll_GetProcessHeap
push 0xc
push 0
push eax
call sub.KERNEL32.dll_HeapAlloc
test eax, eax
je 0x10069773
mov ecx, str.pool_is_disabledcheckout_waiting_for_idle_connection:_removing_expired_connection_for_removing_closed_connection_for_take__:_expiration_
mov edx, 0x10
mov dword [eax], 0
mov edi, eax
mov byte [eax + 8], 4
call fcn.1004c900
mov ebx, dword [edi]
mov dword [esp], eax
test ebx, ebx
je 0x1006935f
mov esi, dword [edi + 4]
push ebx
call dword [esi]
add esp, 4
cmp dword [esi + 4], 0
je 0x1006935f
cmp dword [esi + 8], 9
jae 0x1006934f
call sub.KERNEL32.dll_GetProcessHeap
push ebx
jmp 0x10069357
call sub.KERNEL32.dll_GetProcessHeap
push dword [ebx - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp]
mov dword [edi], eax
mov dword [edi + 4], 0x10397e2c
mov eax, dword [esp + 0xac]
movsd xmm2, qword [esp + 0xd8]
movsd xmm1, qword [esp + 0xd0]
movq xmm0, qword [esp + 0xe0]
mov dword [eax], 1
mov dword [eax + 4], edi
movsd qword [eax + 0x30], xmm2
movsd qword [eax + 0x28], xmm1
movsd xmm2, qword [esp + 0xc8]
movsd xmm1, qword [esp + 0xc0]
movq qword [eax + 0x38], xmm0
movsd qword [eax + 0x20], xmm2
movsd qword [eax + 0x18], xmm1
movq xmm2, qword [esp + 0xb0]
movq xmm1, qword [esp + 0xb8]
movq qword [eax + 0x10], xmm1
movq qword [eax + 8], xmm2
mov eax, dword [esp + 0x2c]
cmp eax, 3
je 0x100693ef
lea ecx, [esp + 0x20]
call fcn.1005fbd0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
call sub.KERNEL32.dll_GetProcessHeap
push dword [esi - 4]
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov edi, dword [esp]
mov eax, dword [esp + 8]
lea ecx, [esp + 0x170]
mov dword [edi], eax
mov dword [edi + 4], 0x10397e2c
movsd xmm2, qword [esp + 0x38]
movsd xmm1, qword [esp + 0x30]
mov eax, dword [esp + 0x48]
movq xmm0, qword [esp + 0x40]
movsd qword [esp + 0xc8], xmm2
movsd qword [esp + 0xc0], xmm1
movq xmm2, qword [esp + 0x20]
movq xmm1, qword [esp + 0x28]
mov dword [esp + 0xd8], eax
movq qword [esp + 0xd0], xmm0
movq qword [esp + 0xb8], xmm1
movq qword [esp + 0xb0], xmm2
call fcn.100600d0
mov edi, 1
jmp 0x100674b6
call fcn.100faaa0
test al, al
jne 0x100690ba
mov byte [esi + 0xc], 1
jmp 0x100690ba
mov eax, dword [esp + 0xd8]
mov esi, ecx
mov edi, edx
mov dword [esp + 4], eax
xor eax, eax
jmp 0x10069611
mov edx, dword [esp + 0x64]
lea eax, [esp + 0x134]
lea ecx, [esp + 0x20]
push eax
call fcn.100d6a70
add esp, 4
jmp 0x10068caf
mov ecx, dword [esp + 0x14]
jmp 0x10068f96
mov ecx, dword [esp + 0x80]
mov eax, dword [esp + 0x88]
mov esi, dword [esp + 0x84]
mov edx, dword [esp + 0x90]
mov edi, dword [esp]
mov ebx, dword [esp + 0x7c]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x24], esi
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x94]
mov edi, dword [esp + 0x64]
cmp cl, 3
mov dword [esp + 0x34], edx
mov edx, dword [esp + 4]
lea edx, [edx + ebx*8]
mov dword [esp + 0x38], edx
mov dword [esp + 0x3c], edi
je 0x10069572
lea edi, [esp + 0x30]
cmp cl, 2
jb 0x10069563
mov eax, dword [esi + 0xc]
lea ecx, [esi + 8]
push dword [esi + 4]
push dword [esi]
push ecx
call dword [eax + 4]
add esp, 0xc
call sub.KERNEL32.dll_GetProcessHeap
push esi
push 0
push eax
call sub.KERNEL32.dll_HeapFree
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x2c]
mov dword [esp], ecx
mov ecx, dword [esp + 0x34]
push dword [esp]
push eax
push edi
call dword [ecx + 4]
add esp, 0xc
mov eax, dword [esp + 4]
lea esi, [eax + ebx*8 - 0x10]
jmp 0x10068dd0
xor eax, eax
lock inc dword [edi]
jle 0x100697e2
mov dword [esp + 0x190], eax
lock inc dword [esi + 0x20]
lock inc dword [esi]
jle 0x100697e2
mov eax, dword [esp + 0x1bc]
mov ebx, edi
mov edi, edx
mov dword [esp + 4], eax
call fcn.100fe340
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
mov cl, byte [esp + 0x74]
mov dl, byte [esp + 0x18]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x34], eax
mov byte [esp + 0x38], cl
movzx ecx, word [esp + 0x60]
mov byte [esp + 0x39], dl
lea edx, [esp + 0x20]
mov word [esp + 0x3a], cx
mov ecx, dword [esp + 4]
mov dword [esp + 0x3c], 1
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], esi
call fcn.10063990
mov esi, dword [esp + 0x190]
mov eax, 1
mov ecx, dword [esp + 0xb0]
mov edx, dword [esp + 0xb4]
mov ebx, dword [esp + 0xb8]
mov dword [esp + 0x78], eax
mov dword [esp + 0x190], 0
mov dword [esp + 0xb0], ecx
mov cl, byte [esp + 0x74]
mov dword [esp + 0xb4], edx
mov dword [esp + 0xb8], ebx
mov dword [esp + 0xc0], esi
mov dword [esp + 0xc4], edi
mov byte [esp + 0xc8], cl
mov cl, byte [esp + 0x18]
mov byte [esp + 0xc9], cl
movzx ecx, word [esp + 0x60]
mov word [esp + 0xca], cx
mov dword [esp + 0xcc], eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x64]
mov dword [esp + 0xd0], eax
mov eax, dword [esp]
mov dword [esp + 0xd4], eax
mov eax, dword [esp + 4]
mov dword [esp + 0xd8], eax
mov eax, dword [esp + 0xf0]
cmp dword [eax + ecx*4 - 4], 0
lea eax, [esp + 0x80]
sete byte [esp + 0xe0]
sete cl
movsd xmm2, qword [esp + 0xb8]
movsd xmm1, qword [esp + 0xc0]
mov edx, dword [esp + 0xc8]
movq xmm0, qword [esp + 0xb0]
movsd qword [esp + 0x28], xmm2
movsd qword [esp + 0x30], xmm1
movq xmm2, qword [esp + 0xd0]
movq xmm1, qword [esp + 0xd8]
mov dword [esp + 0x38], edx
mov dl, 1
movq qword [esp + 0x20], xmm0
mov dword [esp + 0x1f0], edx
movq qword [esp + 0x80], xmm2
movq qword [esp + 0x88], xmm1
jmp 0x10067e85
mov ecx, 0x10411350
call fcn.10109f40
test al, al
jne 0x10068422
jmp 0x1006850c
mov ecx, 0x10411344
call fcn.10109f40
test al, al
jne 0x100678a7
jmp 0x100679aa
movdqa xmm0, xmmword [ecx]
pmovmskb eax, xmm0
bsf ax, ax
movzx ebx, ax
mov al, byte [ecx + ebx]
jmp 0x10068d3f
mov ecx, 0xc
mov edx, 4
call fcn.100067d0
ud2
mov eax, dword [esp + 0x1b0]
mov ecx, 0x103c93eb
mov edx, 0x2b
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x16c]
mov byte [esp + 0x24], al
lea eax, [esp + 0x20]
push 0x1039ea28
push 0x10399614
push eax
call fcn.1000aa20
add esp, 0xc
ud2
mov ecx, 0x103a1b5f
mov edx, 0x23
push 0x103a1b84
call fcn.1000a9c0
add esp, 4
ud2
mov ecx, 0x1037fbf8
call fcn.10032c50
ud2
ud2
mov ecx, 0x44
jmp 0x10069778
mov ecx, 0x20
jmp 0x10069778
xor eax, eax
xchg byte [edi + 0x24], al
mov ecx, str.assertion_failed:_Pin::new_mut_rx_.poll_cx_.is_pending__
mov edx, 0x39
push 0x1039eadc
call fcn.1004d820
add esp, 4
ud2
mov ecx, 0x103986bd
mov edx, 0x22
push 0x1039ea78
jmp 0x100697cc
mov ecx, 0x103986bd
mov edx, 0x22
push 0x1039ea60
jmp 0x100697cc
mov ecx, 0x10
jmp 0x10069778
mov ecx, 0x103986bd
mov edx, 0x22
push 0x1039ea48
jmp 0x100697cc
mov ecx, 0x103986bd
mov edx, 0x22
push 0x1039ea90
jmp 0x100697cc