Function at 0x6c23328c
Capabilities:
Check mutex on windows
Create thread
Get system information on windows

Disassembly:
lea ecx, [esp + 4]
and esp, 0xfffffff0
push dword [ecx - 4]
push ebp
mov ebp, esp
push edi
push esi
push ebx
push ecx
sub esp, 0xd8
mov ebx, dword [ecx]
mov dword [ebp - 0x54], ebx
mov ebx, dword [ecx + 4]
mov dword [ebp - 0x58], ebx
mov ecx, dword [ecx + 8]
mov dword [ebp - 0x6c], ecx
mov edx, dword [0x6c45c110]
test edx, edx
je 0x6c233a04
mov dword [0x6c45c104], 1
mov edx, dword [ebp - 0x54]
mov ebx, dword [edx]
imul ebx, dword [edx + 4]
shl ebx, 2
mov dword [esp], ebx
call sub.msvcrt.dll_malloc
mov dword [0x6c45c10c], eax
mov edi, dword [ebp - 0x54]
mov esi, dword [edi + 8]
mov edi, eax
mov ecx, ebx
rep movsb byte es:[edi], byte [esi]
mov dword [esp + 8], 0x6c45c114
mov ebx, dword [ebp - 0x6c]
mov dword [esp + 4], ebx
mov dword [esp], 0x6c487500
call fcn.6c26b5c4
mov ebx, dword [ebp - 0x58]
mov dword [0x6c45c118], ebx
mov ebx, dword [ebp - 0x6c]
mov dword [0x6c45c11c], ebx
mov ebx, dword [ebp - 0x54]
mov dword [0x6c45c108], ebx
mov ebx, dword [ebp - 0x58]
lea eax, [ebx + ebx + 1]
imul eax, eax
mov dword [0x6c45c120], eax
mov ebx, dword [ebp - 0x54]
mov ebx, dword [ebx + 4]
mov dword [ebp - 0x8c], ebx
mov ebx, dword [0x6c45c110]
mov edi, dword [ebx + 0x120]
mov eax, dword [ebp - 0x8c]
cdq
idiv edi
mov dword [ebp - 0x50], eax
cmp eax, 1
jle 0x6c2333e4
imul eax, edi
mov edx, dword [ebp - 0x8c]
sub edx, eax
mov eax, dword [ebp - 0x50]
add eax, edx
mov dword [ebp - 0x8c], eax
cmp edi, 1
jle 0x6c2333a4
mov edx, eax
mov eax, 1
lea esi, [esi]
mov esi, edx
add edx, dword [ebp - 0x50]
lea ecx, [eax + eax*2]
lea ecx, [ebx + ecx*8]
mov dword [ecx + 0x12c], esi
mov dword [ecx + 0x130], edx
inc eax
cmp eax, edi
jne 0x6c233388
mov dword [ebx + 0x364], edi
lea eax, [ebx + 0x364]
mov dword [esp], eax
call sub.KERNEL32.dll_InterlockedDecrement
push eax
cmp dword [ebx + 0x120], 1
jle 0x6c2333de
mov esi, 1
nop
mov eax, dword [ebx + esi*4 + 0x60]
mov dword [esp], eax
call sub.KERNEL32.dll_SetEvent
push eax
inc esi
cmp esi, dword [ebx + 0x120]
jl 0x6c2333c8
mov ebx, dword [0x6c45c110]
mov eax, dword [ebp - 0x8c]
test eax, eax
jle 0x6c2334fe
mov edi, dword [0x6c45c10c]
mov dword [ebp - 0x90], edi
mov dword [ebp - 0x6c], 0xffffffff
mov dword [ebp - 0x70], 1
mov eax, dword [ebp - 0x54]
mov edx, dword [eax]
mov dword [ebp - 0xb8], ebx
mov esi, eax
mov ecx, dword [ebp - 0x6c]
inc ecx
test edx, edx
jle 0x6c2334c4
lea esi, [esi]
mov eax, dword [ebp - 0x70]
mov dword [ebp - 0x80], eax
xor eax, eax
mov ebx, dword [ebp - 0x6c]
shl ebx, 2
mov dword [ebp - 0x94], ebx
test eax, eax
js 0x6c2334a2
test ecx, ecx
js 0x6c2334a2
mov ebx, dword [esi + 4]
mov dword [ebp - 0x50], ebx
cmp ebx, ecx
jle 0x6c2334a2
mov edi, dword [esi + 8]
mov dword [ebp - 0x58], edi
mov edi, ecx
imul edi, edx
add edi, eax
shl edi, 2
mov ebx, dword [ebp - 0x58]
add ebx, edi
mov dword [ebp - 0xac], ebx
mov bl, byte [ebx + 3]
mov byte [ebp - 0x54], bl
cmp bl, 0xef
jbe 0x6c2334a2
cmp byte [ebp - 0x54], 0xfa
jne 0x6c233561
add edi, dword [ebp - 0x90]
mov dl, byte [edi]
mov ebx, dword [ebp - 0xac]
mov byte [ebx], dl
mov dl, byte [edi + 1]
mov byte [ebx + 1], dl
mov dl, byte [edi + 2]
mov byte [ebx + 2], dl
mov dl, byte [edi + 3]
mov byte [ebx + 3], dl
mov edx, dword [esi]
inc eax
cmp edx, eax
jg 0x6c23343c
inc dword [ebp - 0x70]
mov ebx, dword [ebp - 0x80]
cmp dword [ebp - 0x8c], ebx
jle 0x6c2334d8
mov dword [ebp - 0x6c], ecx
mov ecx, dword [ebp - 0x6c]
inc ecx
test edx, edx
jg 0x6c233428
mov edi, dword [ebp - 0x70]
mov dword [ebp - 0x80], edi
inc dword [ebp - 0x70]
mov ebx, dword [ebp - 0x80]
cmp dword [ebp - 0x8c], ebx
jg 0x6c2334b5
mov ebx, dword [ebp - 0xb8]
mov eax, dword [ebx + 0x364]
test eax, eax
jle 0x6c233508
mov dword [esp + 4], 0xffffffff
mov eax, dword [ebx + 0x60]
mov dword [esp], eax
call sub.KERNEL32.dll_WaitForSingleObject
sub esp, 8
mov eax, dword [ebx + 0x364]
test eax, eax
jg 0x6c2334e8
cmp dword [ebx + 0x120], 1
jle 0x6c233548
mov esi, 1
jmp 0x6c233521
inc esi
cmp esi, dword [ebx + 0x120]
jge 0x6c233548
lea eax, [esi + esi*2]
lea eax, [ebx + eax*8]
mov eax, dword [eax + 0x130]
test eax, eax
je 0x6c233518
dec esi
mov dword [esp], 0xa
call sub.msvcrt_ruby200.dll_Sleep_4
push eax
inc esi
cmp esi, dword [ebx + 0x120]
jl 0x6c233521
mov eax, dword [0x6c45c10c]
mov dword [esp], eax
call sub.msvcrt.dll_free
lea esp, [ebp - 0x10]
pop ecx
pop ebx
pop esi
pop edi
pop ebp
lea esp, [ecx - 4]
ret
cmp byte [ebp - 0x54], 0xff
jne 0x6c233894
lea edi, [eax + 1]
mov dword [ebp - 0x54], edi
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x5c], eax
cmp edi, edx
jge 0x6c2338d4
mov ebx, dword [ebp - 0x60]
test ebx, ebx
js 0x6c2338d4
mov ebx, dword [ebp - 0x60]
cmp dword [ebp - 0x50], ebx
jle 0x6c2338d4
imul ebx, edx
mov dword [ebp - 0x64], ebx
add edi, ebx
mov ebx, dword [ebp - 0x58]
cmp byte [ebx + edi*4 + 3], 0xef
jbe 0x6c2338d4
mov edi, dword [esi + 0xc]
mov dword [ebp - 0x68], edi
mov edi, dword [ebp - 0x5c]
add edi, dword [ebp - 0x64]
lea ebx, [edi + 1]
shl ebx, 4
shl edi, 4
mov dword [ebp - 0x74], edi
mov edi, dword [ebp - 0x68]
movaps xmm2, xmmword [edi + ebx]
mov ebx, dword [ebp - 0x74]
subps xmm2, xmmword [edi + ebx]
mov ebx, dword [ebp - 0x5c]
test ebx, ebx
js 0x6c23388c
cmp edx, dword [ebp - 0x5c]
jle 0x6c23388c
mov edi, dword [ebp - 0x60]
inc edi
js 0x6c23391c
cmp dword [ebp - 0x50], edi
jle 0x6c23391c
imul edi, edx
add edi, dword [ebp - 0x5c]
mov ebx, dword [ebp - 0x58]
cmp byte [ebx + edi*4 + 3], 0xef
jbe 0x6c23391c
shl edi, 4
mov dword [ebp - 0x64], edi
mov edi, dword [ebp - 0x60]
imul edi, edx
add edi, dword [ebp - 0x5c]
shl edi, 4
mov dword [ebp - 0x5c], edi
mov ebx, dword [ebp - 0x68]
mov edi, dword [ebp - 0x64]
movaps xmm3, xmmword [ebx + edi]
mov edi, dword [ebp - 0x5c]
subps xmm3, xmmword [ebx + edi]
mov edi, edx
imul edi, ecx
add edi, eax
shl edi, 4
mov ebx, dword [ebp - 0x68]
movaps xmm4, xmmword [ebx + edi]
movaps xmm1, xmm2
mulps xmm1, xmm2
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xc9
addps xmm0, xmm1
shufps xmm1, xmm1, 0xd2
addps xmm0, xmm1
movss dword [ebp - 0xc0], xmm0
fld dword [ebp - 0xc0]
fmul dword [0x6c36804c]
mov edi, dword [ebp - 0x6c]
mov dword [ebp - 0xa8], edi
mov ebx, dword [ebp - 0x70]
cmp edi, ebx
jg 0x6c233888
lea edi, [eax - 1]
mov dword [ebp - 0x64], edi
lea ebx, [edx*4]
mov dword [ebp - 0x7c], ebx
mov edi, dword [ebp - 0x94]
imul edi, edx
mov ebx, dword [ebp - 0x64]
lea edi, [edi + ebx*4]
add edi, dword [ebp - 0x90]
mov dword [ebp - 0x60], edi
mov edi, dword [ebp - 0x6c]
imul edi, edx
mov ebx, dword [ebp - 0x58]
lea ebx, [ebx + edi*4]
mov dword [ebp - 0x74], ebx
mov ebx, 3
sub ebx, eax
mov eax, dword [ebp - 0x54]
add eax, ebx
shl eax, 2
mov dword [ebp - 0x78], eax
mov eax, edx
shl eax, 4
mov dword [ebp - 0x88], eax
add edi, dword [ebp - 0x64]
shl edi, 4
add edi, dword [ebp - 0x68]
mov dword [ebp - 0x5c], edi
mov dword [ebp - 0x58], 1
mov dword [ebp - 0xa0], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0xa4], 0
mov dword [ebp - 0xb0], ecx
mov dword [ebp - 0xb4], esi
mov dword [ebp - 0x84], edx
mov edx, dword [ebp - 0xa8]
mov edi, dword [ebp - 0x54]
cmp dword [ebp - 0x64], edi
jg 0x6c23379a
mov esi, dword [ebp - 0x5c]
mov ecx, dword [ebp - 0x60]
mov eax, dword [ebp - 0x64]
mov ebx, 1
fild dword [ebp - 0x58]
fstp dword [ebp - 0x68]
movss xmm1, dword [ebp - 0x68]
shufps xmm1, xmm1, 0
movaps xmm0, xmm1
mulps xmm0, xmm3
mov dword [ebp - 0xa8], ebx
test edx, edx
js 0x6c233788
cmp dword [ebp - 0x50], edx
jle 0x6c233788
test eax, eax
js 0x6c233788
cmp dword [ebp - 0x84], eax
jle 0x6c233788
mov ebx, dword [ebp - 0x74]
mov bl, byte [ebx + eax*4 + 3]
mov byte [ebp - 0x68], bl
cmp bl, 0xef
jbe 0x6c233788
cmp bl, 0xfa
jne 0x6c233bad
inc eax
dec dword [ebp - 0xa8]
add esi, 0x10
add ecx, 4
cmp eax, dword [ebp - 0x54]
jle 0x6c23375b
inc edx
mov edi, dword [ebp - 0x7c]
add dword [ebp - 0x60], edi
add dword [ebp - 0x74], edi
dec dword [ebp - 0x58]
sub dword [ebp - 0x78], 0xc
mov eax, dword [ebp - 0x88]
add dword [ebp - 0x5c], eax
cmp dword [ebp - 0x58], 0xfffffffe
jne 0x6c23372a
fstp st(0)
mov ecx, dword [ebp - 0xb0]
mov esi, dword [ebp - 0xb4]
mov edx, dword [ebp - 0x84]
cmp dword [ebp - 0xa4], 0x10
jne 0x6c23388c
mov eax, dword [ebp - 0x9c]
add eax, 0xf
mov edx, dword [ebp - 0x9c]
test edx, edx
cmovns eax, dword [ebp - 0x9c]
sar eax, 4
mov edx, dword [ebp - 0xac]
mov byte [edx], al
mov eax, dword [ebp - 0x98]
add eax, 0xf
mov ebx, dword [ebp - 0x98]
test ebx, ebx
cmovns eax, dword [ebp - 0x98]
sar eax, 4
mov byte [edx + 1], al
mov eax, dword [ebp - 0xa0]
add eax, 0xf
mov edi, dword [ebp - 0xa0]
test edi, edi
cmovns eax, dword [ebp - 0xa0]
sar eax, 4
mov byte [edx + 2], al
mov edx, dword [esi]
mov eax, dword [ebp - 0x54]
jmp 0x6c2334a3
lea ebx, [eax + 1]
mov dword [ebp - 0x54], ebx
cmp ebx, edx
jge 0x6c233865
mov edi, dword [ebp - 0x6c]
test edi, edi
js 0x6c233865
mov edi, dword [ebp - 0x6c]
cmp dword [ebp - 0x50], edi
jg 0x6c2339ac
cmp dword [ebp - 0x5c], 0xffffffff
je 0x6c233874
cmp dword [ebp - 0x5c], edx
jl 0x6c233974
cmp dword [ebp - 0x54], edx
jge 0x6c23388c
mov edi, dword [ebp - 0x70]
test edi, edi
jns 0x6c2339cd
jmp 0x6c23388c
fstp st(0)
nop
mov eax, dword [ebp - 0x54]
jmp 0x6c2334a3
mov edi, dword [ebp - 0x6c]
mov dword [ebp - 0x60], edi
lea ebx, [eax - 1]
mov dword [ebp - 0x5c], ebx
cmp ebx, 0xffffffff
je 0x6c233848
cmp ebx, edx
jge 0x6c233848
test edi, edi
js 0x6c233848
cmp dword [ebp - 0x50], edi
jle 0x6c233848
imul edi, edx
add edi, ebx
mov ebx, dword [ebp - 0x58]
cmp byte [ebx + edi*4 + 3], 0xff
jne 0x6c233848
lea edi, [eax + 1]
mov dword [ebp - 0x54], edi
mov edi, eax
test edi, edi
jns 0x6c233577
lea esi, [esi]
mov edi, dword [ebp - 0x5c]
dec edi
js 0x6c23388c
cmp edi, edx
jge 0x6c23388c
mov ebx, dword [ebp - 0x60]
test ebx, ebx
js 0x6c23388c
mov ebx, dword [ebp - 0x60]
cmp dword [ebp - 0x50], ebx
jle 0x6c23388c
mov ebx, dword [ebp - 0x60]
imul ebx, edx
mov dword [ebp - 0x64], ebx
add edi, ebx
mov ebx, dword [ebp - 0x58]
cmp byte [ebx + edi*4 + 3], 0xef
jbe 0x6c23388c
mov edi, dword [esi + 0xc]
mov dword [ebp - 0x68], edi
mov edi, dword [ebp - 0x5c]
add edi, dword [ebp - 0x64]
mov ebx, edi
shl ebx, 4
dec edi
jmp 0x6c2335be
mov edi, dword [ebp - 0x60]
dec edi
js 0x6c23388c
cmp dword [ebp - 0x50], edi
jle 0x6c23388c
imul edi, edx
add edi, dword [ebp - 0x5c]
mov dword [ebp - 0x64], edi
mov ebx, dword [ebp - 0x58]
cmp byte [ebx + edi*4 + 3], 0xef
jbe 0x6c23388c
mov edi, dword [ebp - 0x60]
imul edi, edx
add edi, dword [ebp - 0x5c]
shl edi, 4
mov dword [ebp - 0x5c], edi
mov edi, dword [ebp - 0x64]
shl edi, 4
mov dword [ebp - 0x60], edi
mov edi, dword [ebp - 0x68]
mov ebx, dword [ebp - 0x5c]
movaps xmm3, xmmword [edi + ebx]
mov ebx, dword [ebp - 0x60]
subps xmm3, xmmword [edi + ebx]
jmp 0x6c233633
mov ebx, dword [ebp - 0x70]
test ebx, ebx
js 0x6c233874
mov edi, dword [ebp - 0x70]
cmp dword [ebp - 0x50], edi
jle 0x6c233874
imul edi, edx
add edi, dword [ebp - 0x5c]
mov ebx, dword [ebp - 0x58]
cmp byte [ebx + edi*4 + 3], 0xff
jne 0x6c233874
mov edi, eax
mov ebx, dword [ebp - 0x70]
mov dword [ebp - 0x60], ebx
jmp 0x6c2338c9
imul edi, edx
add edi, ebx
mov ebx, dword [ebp - 0x58]
cmp byte [ebx + edi*4 + 3], 0xff
jne 0x6c233865
lea edi, [eax + 2]
mov ebx, dword [ebp - 0x54]
mov dword [ebp - 0x5c], ebx
jmp 0x6c2338c9
mov edi, dword [ebp - 0x70]
cmp dword [ebp - 0x50], edi
jle 0x6c23388c
mov edi, dword [ebp - 0x70]
imul edi, edx
add edi, dword [ebp - 0x54]
mov ebx, dword [ebp - 0x58]
cmp byte [ebx + edi*4 + 3], 0xff
jne 0x6c23388c
lea edi, [eax + 2]
mov ebx, dword [ebp - 0x70]
mov dword [ebp - 0x60], ebx
mov ebx, dword [ebp - 0x54]
mov dword [ebp - 0x5c], ebx
jmp 0x6c2338c9
mov dword [esp], 0x368
call fcn.6c2df72c
mov esi, eax
mov dword [eax + 0x364], 0
mov dword [eax + 0x120], 1
lea eax, [ebp - 0x3c]
mov dword [esp], eax
call sub.KERNEL32.dll_GetSystemInfo
push eax
mov edx, dword [ebp - 0x28]
mov dword [esi + 0x120], edx
cmp edx, 1
jle 0x6c233b91
mov eax, 0x18
cmp edx, 0x18
cmovle eax, edx
mov dword [esi + 0x120], eax
call sub.KERNEL32.dll_GetCurrentThread
mov dword [esi], eax
mov eax, dword [esi + 0x120]
test eax, eax
jle 0x6c233b53
lea edi, [esi + 0xc0]
lea ebx, [esi + 0x124]
mov dword [ebp - 0x50], ebx
xor ebx, ebx
jmp 0x6c233a96
inc ebx
mov eax, dword [esi + 0x120]
add edi, 4
add dword [ebp - 0x50], 0x18
cmp ebx, eax
jge 0x6c233b5e
mov dword [esp + 0xc], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sub.KERNEL32.dll_CreateEventA
sub esp, 0x10
mov dword [edi - 0x60], eax
mov dword [esp + 8], 0
mov dword [esp + 4], 0
mov dword [esp], 0
call sub.KERNEL32.dll_CreateMutexA
sub esp, 0xc
mov dword [edi], eax
mov eax, dword [ebp - 0x50]
mov dword [eax], esi
mov dword [eax + 4], ebx
lea edx, [ebx + ebx*2]
shl edx, 3
lea eax, [esi + edx]
mov dword [eax + 0x12c], 1
mov dword [eax + 0x130], 1
test ebx, ebx
je 0x6c233a80
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0
lea eax, [esi + edx + 0x124]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 0x6c22dedc
mov dword [esp + 4], 0
mov dword [esp], 0
call sub.KERNEL32.dll_CreateThread
sub esp, 0x18
mov dword [edi - 0xc0], eax
jmp 0x6c233a80
mov dword [0x6c45c110], esi
jmp 0x6c2332c2
dec eax
jle 0x6c233b53
mov ebx, 1
jmp 0x6c233b71
inc ebx
cmp ebx, dword [esi + 0x120]
jge 0x6c233b53
lea eax, [ebx + ebx*2]
lea eax, [esi + eax*8]
mov eax, dword [eax + 0x130]
test eax, eax
je 0x6c233b68
mov dword [esp], 0xa
call sub.msvcrt_ruby200.dll_Sleep_4
push eax
dec ebx
jmp 0x6c233b68
mov eax, 2
jmp 0x6c233a4f
fild dword [ebp - 0xa8]
fstp dword [ebp - 0x68]
movss xmm5, dword [ebp - 0x68]
shufps xmm5, xmm5, 0
movaps xmm1, xmm5
mulps xmm1, xmm2
addps xmm1, xmmword [esi]
addps xmm1, xmm0
movaps xmm5, xmm4
subps xmm5, xmm1
movaps xmm1, xmm5
mulps xmm1, xmm5
movaps xmm5, xmm1
shufps xmm5, xmm1, 0xc9
addps xmm5, xmm1
shufps xmm1, xmm1, 0xd2
addps xmm5, xmm1
movss dword [ebp - 0x68], xmm5
fld dword [ebp - 0x68]
fxch st(1)
fcomi st(1)
fstp st(1)
jbe 0x6c233788
mov ebx, dword [ebp - 0xa8]
mov edi, dword [ebp - 0x78]
mov ebx, dword [edi + ebx*4 + 0x6c364b4c]
movzx edi, byte [ecx]
imul edi, ebx
add dword [ebp - 0x9c], edi
movzx edi, byte [ecx + 1]
imul edi, ebx
add dword [ebp - 0x98], edi
movzx edi, byte [ecx + 2]
imul edi, ebx
add dword [ebp - 0xa0], edi
add dword [ebp - 0xa4], ebx
jmp 0x6c233788