Function at 0x401db9
Capabilities:
Create thread
Encode data using base64
Get system information on windows

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x358
movdqa xmmword [rsp + 0x340], xmm7
movaps xmmword [rsp + 0x330], xmm6
mov al, byte [0x0041a0c8]
mov ecx, 0x10
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rsi, rax
mov eax, 1
mov qword [rsi], rax
mov qword [rsi + 8], rax
call fcn.0040ecf9
xor ecx, ecx
mov qword [rsp + 0x308], rcx
mov byte [rsp + 0x310], 0
mov dword [rsp + 0x314], eax
mov dword [rsp + 0x318], edx
mov dword [rsp + 0x324], 1
mov qword [rsp + 0x2b0], 0x400
mov qword [rsp + 0x268], rcx
mov qword [rsp + 0x2b8], 0x200
mov qword [rsp + 0x2a0], rsi
lea rax, [0x00416ec8]
mov qword [rsp + 0x2a8], rax
mov qword [rsp + 0x278], rcx
mov qword [rsp + 0x2c0], rcx
mov qword [rsp + 0x2d0], rcx
mov qword [rsp + 0x2e0], rcx
mov qword [rsp + 0x2f0], rcx
mov dword [rsp + 0x298], 0x3b9aca00
mov dword [rsp + 0x288], 0
mov dword [rsp + 0x320], 0x3d
mov qword [rsp + 0x300], 0x100
mov word [rsp + 0x328], 0
lea rdx, str.TOKIO_WORKER_THREADSa
lea rsi, [rsp + 0x30]
mov r8d, 0x14
mov rcx, rsi
call fcn.0040ae3b
movzx eax, byte [rsi + 0x18]
cmp eax, 2
je 0x401f50
cmp eax, 3
jne 0x405366
mov rsi, qword [rsp + 0x30]
mov rbx, qword [rsp + 0x38]
mov r8, qword [rsp + 0x40]
lea rdi, [rsp + 0xd0]
mov rcx, rdi
mov rdx, rsi
call fcn.0040a687
cmp byte [rdi], 0
jne 0x405366
mov r13, qword [rsp + 0xd8]
test r13, r13
je 0x405366
test rbx, rbx
je 0x401f7e
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, rsi
call fcn.00412bb4
jmp 0x401f7e
pxor xmm0, xmm0
lea rsi, [rsp + 0xd0]
movdqa xmmword [rsi + 0x20], xmm0
movdqa xmmword [rsi + 0x10], xmm0
movdqa xmmword [rsi], xmm0
mov rcx, rsi
call sub.KERNEL32.dll_GetSystemInfo
mov r13d, dword [rsi + 0x20]
cmp r13d, 1
adc r13d, 0
call fcn.0040e796
lock inc qword [rax]
jle 0x405366
mov r14, rax
lea rcx, [rsp + 0x268]
mov rdx, qword [rcx + 0x50]
add rdx, r13
call fcn.0040f10c
mov qword [rsp + 0xb8], rdx
mov qword [rsp + 0x1b8], rax
lock inc qword [rax]
jle 0x405366
lea rbx, [rsp + 0x308]
mov rcx, rbx
call fcn.0040f345
mov esi, eax
mov edi, edx
mov rcx, rbx
call fcn.0040f345
mov r15, qword [rbx - 0x28]
test r15, r15
je 0x401ff6
mov rcx, qword [rsp + 0x2e8]
lock inc qword [r15]
jg 0x401ff6
jmp 0x405366
mov r12, qword [rsp + 0x2f0]
test r12, r12
mov dword [rsp + 0xa8], eax
mov dword [rsp + 0xa0], edx
je 0x402025
mov r8, qword [rsp + 0x2f8]
lock inc qword [r12]
jg 0x402025
jmp 0x405366
mov r9d, dword [rsp + 0x320]
mov r10, qword [rsp + 0x288]
mov r11, qword [rsp + 0x300]
mov bl, byte [rsp + 0x328]
mov bpl, byte [rsp + 0x329]
mov qword [rsp + 0x30], r10
mov dword [rsp + 0x78], r9d
mov qword [rsp + 0x38], r11
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x58], r8
mov byte [rsp + 0x7c], bl
mov qword [rsp + 0x60], 0
mov byte [rsp + 0x68], 0
movzx eax, word [rsp + 0x1b2]
mov word [rsp + 0x69], ax
mov al, byte [rsp + 0x1b4]
mov byte [rsp + 0x6b], al
mov dword [rsp + 0x6c], esi
mov dword [rsp + 0x70], edi
mov byte [rsp + 0x7d], bpl
mov al, byte [0x0041a0c8]
mov ecx, 0x20
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rsi, rax
mov edi, 1
mov qword [rax], rdi
mov qword [rax + 8], rdi
mov qword [rax + 0x10], r14
mov byte [rax + 0x18], 0
mov al, byte [0x0041a0c8]
mov ecx, 0x38
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov qword [rax], rdi
mov qword [rax + 8], rdi
mov qword [rax + 0x10], rsi
pxor xmm0, xmm0
movdqu xmmword [rax + 0x18], xmm0
mov byte [rax + 0x28], 0
mov qword [rax + 0x30], 0
mov qword [rsp + 0x1a8], rax
mov rax, r13
shr rax, 0x3c
jne 0x405366
lea rsi, [r13*8]
mov al, byte [0x0041a0c8]
mov edx, 8
mov rcx, rsi
call fcn.004018e0
test rax, rax
je 0x405366
mov qword [rsp + 0x130], rax
mov qword [rsp + 0x138], r13
mov qword [rsp + 0x140], 0
movabs rax, 0x800000000000000
dec rax
cmp r13, rax
ja 0x405366
mov qword [rsp + 0xc8], rsi
mov qword [rsp + 0x98], r14
mov rcx, r13
shl rcx, 4
mov al, byte [0x0041a0c8]
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
lea rcx, [rsp + 0x220]
mov qword [rcx], rax
mov qword [rcx + 8], r13
mov qword [rcx + 0x10], 0
lea r15, [rsp + 0xd0]
mov r12d, 1
xorps xmm6, xmm6
xor ebp, ebp
mov qword [rsp + 0xc0], r13
mov al, byte [0x0041a0c8]
mov ecx, 0x800
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
inc rbp
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xd8], 0x100
mov qword [rsp + 0xe0], 0
mov edi, 0x100
xor esi, esi
cmp rsi, qword [rsp + 0xd8]
jne 0x40224b
mov rcx, r15
mov rdx, rsi
call fcn.0040fc90
mov rsi, qword [rsp + 0xe0]
inc rsi
mov qword [rsp + 0xe0], rsi
dec rdi
jne 0x40222e
mov rbx, qword [rsp + 0xd0]
cmp qword [rsp + 0xd8], rsi
jbe 0x40229b
test rsi, rsi
je 0x405355
lea r9, [rsi*8]
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, rbx
call sub.KERNEL32.dll_HeapReAlloc
mov rbx, rax
test rax, rax
je 0x405366
mov qword [rsp + 0x90], rbp
cmp rsi, 0x100
jne 0x405366
mov al, byte [0x0041a0c8]
mov ecx, 0x28
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rbp, rax
mov qword [rax], r12
mov qword [rax + 8], r12
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], 0
mov dword [rax + 0x20], 0
lock inc qword [rax]
jle 0x405366
mov rax, qword [rsp + 0x1a8]
mov rdi, qword [rax + 0x10]
lock inc qword [rdi]
jle 0x405366
mov al, byte [0x0041a0c8]
mov ecx, 0x38
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rsi, rax
mov qword [rax], r12
mov qword [rax + 8], r12
mov qword [rax + 0x10], rdi
movups xmmword [rax + 0x18], xmm6
mov byte [rax + 0x28], 0
mov qword [rax + 0x30], 0
lock inc qword [rax]
jle 0x405366
call fcn.0040bdbc
mov qword [rsp + 0x88], rax
mov dword [rsp + 0xb0], edx
mov r12b, byte [rsp + 0x7c]
mov r13d, dword [rsp + 0x30]
mov r14d, dword [rsp + 0x34]
lea rcx, [rsp + 0x60]
call fcn.0040f345
mov r15d, eax
mov edi, edx
mov al, byte [0x0041a0c8]
mov ecx, 0x50
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rbx, rax
xor r12b, 1
test r13d, r13d
mov eax, 0x3d
cmove r14d, eax
mov eax, 0
mov qword [rbx], rax
mov qword [rbx + 8], rsi
mov dword [rbx + 0x10], r15d
mov dword [rbx + 0x14], edi
mov qword [rbx + 0x18], rbp
mov qword [rbx + 0x20], rax
movabs rax, 0x40a99d60864b8a7e
mov qword [rbx + 0x28], rax
mov rax, qword [rsp + 0x88]
mov qword [rbx + 0x30], rax
mov eax, dword [rsp + 0xb0]
mov dword [rbx + 0x38], eax
mov dword [rbx + 0x40], 0
mov dword [rbx + 0x44], r14d
mov byte [rbx + 0x48], r12b
mov word [rbx + 0x49], 0
mov byte [rbx + 0x4b], 0
mov rdx, qword [rsp + 0x140]
cmp rdx, qword [rsp + 0x138]
jne 0x402433
lea rcx, [rsp + 0x130]
call fcn.0040fc90
mov rdx, qword [rsp + 0x140]
mov r13, qword [rsp + 0xc0]
lea r15, [rsp + 0xd0]
mov r12d, 1
mov rax, qword [rsp + 0x130]
mov qword [rax + rdx*8], rbx
inc qword [rsp + 0x140]
mov r14, qword [rsp + 0x230]
cmp r14, qword [rsp + 0x228]
jne 0x402487
lea rcx, [rsp + 0x220]
mov rdx, r14
call fcn.004102dd
mov r14, qword [rsp + 0x230]
mov rbx, qword [rsp + 0x220]
mov rax, r14
shl rax, 4
mov qword [rbx + rax], rbp
mov qword [rbx + rax + 8], rsi
inc r14
mov qword [rsp + 0x230], r14
mov rbp, qword [rsp + 0x90]
cmp rbp, r13
jne 0x4021e6
movabs rax, 0xfffffffffffffff
cmp r13, rax
ja 0x405366
mov al, byte [0x0041a0c8]
mov edx, 8
mov rcx, qword [rsp + 0xc8]
call fcn.004018e0
test rax, rax
je 0x405366
mov r12, rax
mov rax, qword [rsp + 0x228]
xorps xmm6, xmm6
movups xmmword [rsp + 0xd9], xmm6
movaps xmmword [rsp + 0xd0], xmm6
movdqu xmm0, xmmword [rsp + 0xd8]
movdqa xmmword [rsp + 0x1c0], xmm0
mov rcx, qword [rsp + 0xe8]
mov qword [rsp + 0x1d0], rcx
cmp rax, r14
jbe 0x402574
test r14, r14
je 0x40255e
mov r9, r14
shl r9, 4
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, rbx
call sub.KERNEL32.dll_HeapReAlloc
mov rbx, rax
test rax, rax
jne 0x402574
jmp 0x405366
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, rbx
call fcn.00412bb4
mov ebx, 8
shl r13, 0x10
movups xmmword [rsp + 0xd7], xmm6
mov qword [rsp + 0xe7], 0
movups xmm0, xmmword [rsp + 0xd0]
movaps xmmword [rsp + 0x150], xmm0
mov rax, qword [rsp + 0xdf]
mov qword [rsp + 0x15f], rax
mov rax, qword [rsp + 0xe7]
mov qword [rsp + 0x167], rax
mov ebp, 1
lock xadd qword [0x00415108], rbp
test rbp, rbp
je 0x4025bc
movups xmm0, xmmword [rsp + 0x15f]
movups xmmword [rsp + 0x1ef], xmm0
movdqa xmm0, xmmword [rsp + 0x150]
movdqa xmmword [rsp + 0x1e0], xmm0
lea rdi, [rsp + 0xd0]
lea rsi, [rsp + 0x30]
mov ecx, 0xa
rep movsq qword [rdi], qword [rsi]
mov al, byte [0x0041a0c8]
mov ecx, 0x160
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov r15d, 1
mov qword [rax], r15
mov qword [rax + 8], r15
mov rdi, rax
add rdi, 0x10
lea rdx, [rsp + 0xd0]
mov ecx, 0xa
mov rsi, rdx
rep movsq qword [rdi], qword [rsi]
mov qword [rax + 0x60], rbx
mov qword [rax + 0x68], r14
mov qword [rax + 0x70], rbp
xor esi, esi
mov qword [rax + 0x78], rsi
mov byte [rax + 0x80], sil
movaps xmm0, xmmword [rsp + 0x1e0]
movups xmmword [rax + 0x81], xmm0
movups xmm0, xmmword [rsp + 0x1ef]
movups xmmword [rax + 0x90], xmm0
mov byte [rax + 0xa0], sil
mov qword [rax + 0xa8], r15
mov rcx, qword [rsp + 0xc0]
mov qword [rax + 0xb0], rcx
mov qword [rax + 0xb8], rsi
mov qword [rax + 0xc0], r13
mov qword [rax + 0xc8], rcx
mov qword [rax + 0xd0], rsi
mov byte [rax + 0xd8], sil
mov qword [rax + 0xe0], r12
mov qword [rax + 0xe8], rcx
mov qword [rax + 0xf0], rsi
movdqa xmm0, xmmword [rsp + 0x1c0]
movdqu xmmword [rax + 0xf8], xmm0
mov rcx, qword [rsp + 0x1d0]
mov qword [rax + 0x108], rcx
mov qword [rax + 0x110], rsi
mov byte [rax + 0x118], sil
mov r9d, 8
mov qword [rax + 0x120], r9
pxor xmm0, xmm0
movdqu xmmword [rax + 0x128], xmm0
mov rcx, qword [rsp + 0x98]
mov qword [rax + 0x138], rcx
mov rcx, qword [rsp + 0x1b8]
mov qword [rax + 0x140], rcx
mov qword [rax + 0x148], rsi
mov byte [rax + 0x150], sil
mov cl, byte [rsp + 0x1b7]
mov byte [rax + 0x153], cl
movzx ecx, word [rsp + 0x1b5]
mov word [rax + 0x151], cx
mov ecx, dword [rsp + 0xa8]
mov dword [rax + 0x154], ecx
mov ecx, dword [rsp + 0xa0]
mov dword [rax + 0x158], ecx
mov r14, qword [rsp + 0x130]
mov r12, qword [rsp + 0x140]
lea r8, [r14 + r12*8]
mov qword [rdx + 0x18], r12
movdqu xmmword [rdx + 0x20], xmm0
mov qword [rdx], r14
mov qword [rdx + 8], r8
lea rcx, [rsp + 0x130]
mov qword [rdx + 0x10], rcx
movdqu xmmword [rsp + 0x158], xmm0
mov qword [rsp + 0x150], r9
mov qword [rsp + 0x140], rsi
mov ecx, 0
test r12, r12
mov qword [rsp + 0x90], rax
mov ebx, 8
je 0x4028c3
mov qword [rsp + 0x88], r8
shl r12, 3
mov r13d, 8
xor esi, esi
xor ebp, ebp
mov rdi, qword [r14 + rbp*8]
lock inc qword [rax]
jle 0x405366
mov al, byte [0x0041a0c8]
mov ecx, 0x28
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rbx, rax
mov qword [rax], r15
mov qword [rax + 8], r15
mov rax, qword [rsp + 0x90]
mov qword [rbx + 0x10], rax
mov qword [rbx + 0x18], rbp
mov qword [rbx + 0x20], rdi
cmp rsi, qword [rsp + 0x158]
jne 0x402876
lea rcx, [rsp + 0x150]
mov rdx, rsi
call fcn.0040fc90
mov rax, qword [rsp + 0x90]
mov r13, qword [rsp + 0x150]
mov rsi, qword [rsp + 0x160]
mov qword [r13 + rsi*8], rbx
mov rsi, qword [rsp + 0x160]
inc rsi
mov qword [rsp + 0x160], rsi
inc rbp
add r12, 0xfffffffffffffff8
jne 0x4027fa
mov rax, qword [rsp + 0x88]
mov qword [rsp + 0xd0], rax
mov qword [rsp + 0xf8], rbp
mov rbx, qword [rsp + 0x150]
mov rcx, qword [rsp + 0x158]
mov qword [rsp + 0x218], rcx
lea rcx, [rsp + 0xd0]
call fcn.0040ec87
mov rcx, qword [rsp + 0x130]
mov rdx, qword [rsp + 0x140]
call fcn.0040e2c4
cmp qword [rsp + 0x138], 0
je 0x40290e
mov r8, qword [rsp + 0x130]
mov rcx, qword [0x0041a090]
xor edx, edx
call fcn.00412bb4
mov rax, qword [rsp + 0x1a8]
lock dec qword [rax]
jne 0x402929
lea rcx, [rsp + 0x1a8]
call fcn.0040e27c
lea rdi, [rsp + 0xd0]
mov edx, 1
mov rcx, rdi
mov r8, qword [rsp + 0x90]
call fcn.00410429
cmp dword [rdi], 3
je 0x405366
mov rax, qword [rsp + 0xe0]
mov qword [rsp + 0x40], rax
movdqu xmm0, xmmword [rsp + 0xd0]
movdqa xmmword [rsp + 0x30], xmm0
lea r12, [rbx + rsi*8]
test rsi, rsi
mov qword [rsp + 0x1a0], rbx
je 0x403297
xor ebp, ebp
xorps xmm6, xmm6
pcmpeqd xmm7, xmm7
mov r15, rbx
mov rbx, qword [r15]
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x405366
mov rcx, qword [rax]
movabs rdx, 0x7fffffffffffffff
cmp rcx, rdx
jae 0x405366
lea rdx, [rcx + 1]
mov qword [rax], rdx
mov rsi, qword [rax + 8]
cmp rsi, 2
je 0x405350
test rsi, rsi
je 0x4029e3
mov rdi, qword [rax + 0x10]
lock inc qword [rdi]
mov ecx, 1
jg 0x4029f3
jmp 0x405366
mov rdi, qword [rax + 0x10]
lock inc qword [rdi]
jle 0x405366
xor ecx, ecx
dec qword [rax]
mov qword [rsp + 0x150], rcx
mov qword [rsp + 0x158], rdi
mov r13d, 1
lock xadd qword [0x00415100], r13
mov al, byte [0x0041a0c8]
mov ecx, pe_nt_image_headers64
mov edx, pe_nt_image_headers64
call fcn.004018e0
test rax, rax
je 0x405366
mov r14, rax
lea rax, [rdi + 0x140]
lea rcx, [rdi + 0xd8]
test rsi, rsi
mov qword [r14], 0xcc
mov qword [r14 + 8], rbp
lea rdx, [0x00416f60]
mov qword [r14 + 0x10], rdx
mov qword [r14 + 0x18], rbp
mov qword [r14 + 0x20], r13
mov qword [r14 + 0x28], 2
mov qword [r14 + 0x30], rbx
movups xmmword [r14 + 0x48], xmm6
mov qword [r14 + 0x58], rbp
cmove rax, rcx
mov rbx, qword [rax]
lea r13, [rbx + 0x40]
mov rcx, r13
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov al, byte [rbx + 0x48]
cmp byte [rbx + 0xcc], 0
je 0x402ab3
lock sub qword [r14], 0x40
jb 0x405366
mov rax, qword [r14 + 0x10]
mov rcx, r14
call qword [rax + 0x30]
jmp 0x4031ae
mov rcx, qword [rbx + 0x58]
mov rax, qword [rbx + 0x68]
cmp rax, rcx
jne 0x402ad1
lea rcx, [rbx + 0x50]
call fcn.00410d9a
mov rcx, qword [rbx + 0x58]
mov rax, qword [rbx + 0x68]
mov rdx, qword [rbx + 0x60]
add rdx, rax
cmp rdx, rcx
mov r8d, 0
cmovae r8, rcx
sub rdx, r8
mov rcx, qword [rbx + 0x50]
shl rdx, 4
mov qword [rcx + rdx], r14
mov byte [rcx + rdx + 8], 1
inc rax
mov qword [rbx + 0x68], rax
lock inc qword [rbx + 0x110]
mov rax, qword [rbx + 0x108]
test rax, rax
je 0x402b36
lock dec qword [rbx + 0x108]
inc dword [rbx + 0xc8]
add rbx, 0xd0
mov rcx, rbx
call sub.KERNEL32.dll_WakeConditionVariable
jmp 0x4031ae
mov rax, qword [rbx + 0x100]
cmp rax, qword [rbx + 0xf8]
je 0x4031ae
mov rax, qword [rbx + 0xa0]
test rax, rax
je 0x405366
lock inc qword [rax]
jle 0x405366
mov qword [rsp + 0xc0], rax
mov rax, qword [rbx + 0xc0]
mov qword [rsp + 0x88], rax
mov rax, qword [rbx + 0x30]
mov r8, qword [rbx + 0x38]
mov rcx, qword [r8 + 0x10]
dec rcx
and rcx, 0xfffffffffffffff0
lea rdx, [rcx + rax]
add rdx, 0x10
lea rcx, [rsp + 0xd0]
call qword [r8 + 0x28]
mov rax, qword [rbx + 0x10]
test rax, rax
je 0x402baf
mov r10, qword [rbx + 0x18]
mov rbp, qword [rsp + 0xd0]
mov r9, qword [rsp + 0xd8]
mov r8, qword [rsp + 0xe0]
mov ecx, 1
lock xadd qword [rdi], rcx
test rsi, rsi
je 0x402bed
mov edx, 1
mov qword [rsp + 0xa8], rdx
test rcx, rcx
jns 0x402c00
jmp 0x405366
test rcx, rcx
js 0x405366
xor ecx, ecx
mov qword [rsp + 0xa8], rcx
test rax, rax
jne 0x402d45
mov r10, qword [0x0041a088]
test r10, r10
je 0x402c1d
dec r10
jmp 0x402d45
mov qword [rsp + 0xa0], r8
mov rsi, r9
mov r8d, 0xe
lea rcx, [rsp + 0xd0]
lea rdx, str.RUST_MIN_STACK
call fcn.0040ae3b
mov al, byte [rsp + 0xe8]
cmp al, 3
jne 0x402cf9
mov rdx, qword [rsp + 0xd0]
test rdx, rdx
mov r9, rsi
mov r8, qword [rsp + 0xa0]
je 0x402d34
mov rax, qword [rsp + 0xd8]
mov qword [rsp + 0xb0], rax
mov r8, qword [rsp + 0xe0]
lea rcx, [rsp + 0xd0]
mov qword [rsp + 0xc8], rdx
call fcn.0040a687
mov al, byte [rsp + 0xd0]
mov r10, qword [rsp + 0xd8]
cmp qword [rsp + 0xb0], 0
je 0x402ce8
mov rcx, qword [0x0041a090]
xor edx, edx
mov qword [rsp + 0xb0], r10
mov r8, qword [rsp + 0xc8]
mov byte [rsp + 0xc8], al
call fcn.00412bb4
mov al, byte [rsp + 0xc8]
mov r10, qword [rsp + 0xb0]
test al, al
mov r9, rsi
mov r8, qword [rsp + 0xa0]
jne 0x402d34
jmp 0x402d3a
cmp al, 2
mov r9, rsi
mov r8, qword [rsp + 0xa0]
je 0x402d34
cmp qword [rsp + 0xd8], 0
je 0x402d34
mov r8, qword [rsp + 0xd0]
mov rcx, qword [0x0041a090]
xor edx, edx
call fcn.00412bb4
mov r8, qword [rsp + 0xa0]
mov r9, rsi
mov r10d, 0x200000
lea rax, [r10 + 1]
mov qword [0x0041a088], rax
test rbp, rbp
mov qword [rsp + 0xb0], r10
je 0x402d72
cmp r8, 0x10
jae 0x402d76
test r8, r8
je 0x402d6e
xor eax, eax
cmp byte [rbp + rax], 0
je 0x402d95
inc rax
cmp r8, rax
jne 0x402d5f
xor eax, eax
jmp 0x402d9a
xor ecx, ecx
jmp 0x402dce
xor ecx, ecx
mov rdx, rbp
mov rsi, r8
mov qword [rsp + 0xa0], r9
call fcn.00409926
mov r9, qword [rsp + 0xa0]
jmp 0x402d9d
mov eax, 1
mov rsi, r8
test rax, rax
jne 0x405366
mov qword [rsp + 0xd0], rbp
mov qword [rsp + 0xd8], r9
mov qword [rsp + 0xe0], rsi
lea rcx, [rsp + 0xd0]
call fcn.00401ab6
mov rcx, rax
call fcn.0040d61c
mov qword [rsp + 0x1c0], rax
lock inc qword [rax]
jle 0x405366
mov rsi, rax
mov al, byte [0x0041a0c8]
mov ecx, 0x30
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rbp, rax
mov eax, 1
mov qword [rbp], rax
mov qword [rbp + 8], rax
movups xmmword [rbp + 0x10], xmm6
mov qword [rsp + 0x1e0], rbp
lock inc qword [rbp]
jle 0x405366
xor ecx, ecx
call fcn.0040b53c
test rax, rax
mov qword [rsp + 0xa0], rax
je 0x402e5c
lock inc qword [rax]
jle 0x405366
mov byte [0x0041a038], 1
mov rcx, rax
call fcn.0040adfa
jmp 0x402e63
xor ecx, ecx
call fcn.0040b53c
mov qword [rsp + 0xd0], rax
test rax, rax
je 0x402e83
lock dec qword [rax]
jne 0x402e83
lea rcx, [rsp + 0xd0]
call fcn.0040d45c
mov qword [rsp + 0xc8], rsi
mov rax, qword [rsp + 0x1e0]
mov qword [rsp + 0x98], rax
mov rcx, qword [rax + 0x10]
test rcx, rcx
je 0x402eaf
lock inc qword [rcx + 0x18]
jle 0x405374
mov al, byte [0x0041a0c8]
mov ecx, 0x38
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rsi, rax
mov rax, qword [rsp + 0xc8]
mov qword [rsi], rax
mov qword [rsi + 8], rbp
mov rax, qword [rsp + 0xa0]
mov qword [rsi + 0x10], rax
mov rax, qword [rsp + 0xa8]
mov qword [rsi + 0x18], rax
mov qword [rsi + 0x20], rdi
mov rax, qword [rsp + 0xc0]
mov qword [rsi + 0x28], rax
mov rax, qword [rsp + 0x88]
mov qword [rsi + 0x30], rax
mov al, byte [0x0041a0c8]
mov ecx, 0x10
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rdi, rax
mov qword [rax], rsi
lea rax, [0x00416f10]
mov qword [rdi + 8], rax
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x10000
xor ecx, ecx
mov rdx, qword [rsp + 0xb0]
lea r8, [0x0040b784]
mov r9, rdi
call sub.KERNEL32.dll_CreateThread
test rax, rax
je 0x403103
mov qword [rsp + 0xb0], rax
mov rax, qword [rsp + 0x1c0]
mov qword [rsp + 0xc0], rax
lock inc qword [rbx + 0x100]
inc qword [rbx + 0xc0]
mov rsi, qword [rbx + 0x90]
mov rbp, qword [rbx + 0x98]
mov rcx, rsi
mov rdx, rbp
mov r8, qword [rsp + 0x88]
call fcn.004101a1
mov rdi, rax
cmp qword [rbx + 0x80], 0
je 0x4031f0
mov rax, qword [rbx + 0x70]
mov rcx, qword [rbx + 0x78]
mov r8, rcx
and r8, rdi
shr rdi, 0x39
mov qword [rsp + 0xa8], rdi
movd xmm0, edi
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
lea rdi, [rax - 0x20]
xor r10d, r10d
xor r11d, r11d
movdqu xmm1, xmmword [rax + r8]
movdqa xmm2, xmm1
pcmpeqb xmm2, xmm0
pmovmskb ebp, xmm2
test bp, bp
je 0x403047
bsf esi, ebp
lea edx, [rbp - 1]
and edx, ebp
add rsi, r8
and rsi, rcx
mov rbp, rsi
shl rbp, 5
mov r9, rdi
sub r9, rbp
mov ebp, edx
mov rdx, qword [rsp + 0x88]
cmp rdx, qword [r9]
jne 0x403016
jmp 0x403093
test r11, r11
mov r11d, 1
jne 0x403070
pmovmskb edx, xmm1
xor r11d, r11d
test edx, edx
setne r11b
bsf edx, edx
add rdx, r8
and rdx, rcx
mov qword [rsp + 0xa0], rdx
pcmpeqb xmm1, xmm7
pmovmskb edx, xmm1
test edx, edx
jne 0x403204
add r8, r10
add r8, 0x10
add r10, 0x10
and r8, rcx
jmp 0x403004
neg rsi
shl rsi, 5
mov rcx, qword [rax + rsi - 8]
mov qword [rsp + 0xe0], rcx
movdqu xmm0, xmmword [rax + rsi - 0x18]
movdqa xmmword [rsp + 0xd0], xmm0
mov rcx, qword [rsp + 0xc0]
mov qword [rax + rsi - 0x18], rcx
mov rcx, qword [rsp + 0x98]
mov qword [rax + rsi - 0x10], rcx
mov rcx, qword [rsp + 0xb0]
mov qword [rax + rsi - 8], rcx
cmp qword [rsp + 0xd0], 0
mov ebp, 0
je 0x4031ae
lea rcx, [rsp + 0xd0]
call fcn.0040e630
jmp 0x4031ae
mov rsi, qword [rdi]
mov rbp, qword [rdi + 8]
mov rcx, rsi
call qword [rbp]
cmp qword [rbp + 8], 0
je 0x403133
cmp qword [rbp + 0x10], 0x11
jb 0x403122
mov rsi, qword [rsi - 8]
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, rsi
call fcn.00412bb4
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, rdi
call fcn.00412bb4
call sub.KERNEL32.dll_GetLastError
mov esi, eax
mov rax, qword [rsp + 0x98]
lock dec qword [rax]
jne 0x403166
lea rcx, [rsp + 0x1e0]
call fcn.0040d2e1
mov rax, qword [rsp + 0x1c0]
lock dec qword [rax]
mov ebp, 0
jne 0x403186
lea rcx, [rsp + 0x1c0]
call fcn.0040d3ec
shl rsi, 0x20
or rsi, 2
shr rsi, 0x20
cmp esi, 0x2733
jne 0x40536a
mov rax, qword [rbx + 0x100]
test rax, rax
je 0x40536a
mov rcx, r13
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
lea rcx, [rsp + 0x150]
call fcn.0040e06e
mov eax, 0xcc
mov ecx, 0x84
lock cmpxchg qword [r14], rcx
je 0x4031de
mov rax, qword [r14 + 0x10]
mov rcx, r14
call qword [rax + 0x20]
add r15, 8
cmp r15, r12
jne 0x40298c
jmp 0x4032c2
lea rcx, [rbx + 0x70]
mov rdx, rsi
mov r8, rbp
call fcn.00411003
jmp 0x402fce
mov r9, qword [rsp + 0xa0]
mov r8b, byte [rax + r9]
test r8b, r8b
js 0x403225
movdqa xmm0, xmmword [rax]
pmovmskb edx, xmm0
bsf r9d, edx
mov r8b, byte [rax + r9]
and r8b, 1
movzx edx, r8b
sub qword [rbx + 0x80], rdx
lea rdx, [r9 - 0x10]
and rdx, rcx
mov rcx, qword [rsp + 0xa8]
mov byte [rax + r9], cl
mov byte [rdx + rax + 0x10], cl
inc qword [rbx + 0x88]
shl r9, 5
mov rcx, rax
sub rcx, r9
neg r9
mov rdx, qword [rsp + 0x88]
mov qword [rax + r9 - 0x20], rdx
mov rax, qword [rsp + 0xc0]
mov qword [rcx - 0x18], rax
mov rax, qword [rsp + 0x98]
mov qword [rcx - 0x10], rax
mov rax, qword [rsp + 0xb0]
mov qword [rcx - 8], rax
xor ebp, ebp
jmp 0x4031ae
sub r12, rbx
je 0x4032c2
shr r12, 3
mov rsi, qword [rsp + 0x1a0]
mov rax, qword [rsi]
lock dec qword [rax]
jne 0x4032b9
mov rcx, rsi
call fcn.0040ec22
add rsi, 8
dec r12
jne 0x4032a8
cmp qword [rsp + 0x218], 0
je 0x4032e3
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, qword [rsp + 0x1a0]
call fcn.00412bb4
lea rsi, [rsp + 0x30]
mov rcx, rsi
call fcn.0040e045
mov eax, 1
mov qword [rsp + 0xd0], rax
pxor xmm0, xmm0
movdqu xmmword [rsp + 0xd8], xmm0
mov byte [rsp + 0xe8], 0
movdqu xmm0, xmmword [rsi]
movdqu xmmword [rsp + 0xe9], xmm0
mov rcx, qword [rsi + 0xf]
mov qword [rsp + 0xf8], rcx
mov qword [rsp + 0x100], 0
mov qword [rsp + 0x108], rax
mov r8, qword [rsp + 0x90]
mov qword [rsp + 0x110], r8
mov rax, qword [rsp + 0x1b8]
mov qword [rsp + 0x118], rax
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0x120], rax
lea rsi, [rsp + 0x30]
mov edx, 1
mov rcx, rsi
call fcn.00410429
cmp dword [rsi], 3
je 0x405366
lea rcx, [rsp + 0xd8]
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x140], rax
movdqu xmm0, xmmword [rsp + 0x30]
movdqa xmmword [rsp + 0x130], xmm0
cmp qword [rcx - 8], 0
je 0x40344b
mov r9, qword [rsp + 0x108]
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0x20], rax
lea rdx, [0x004018d5]
lea rsi, [rsp + 0x1e0]
mov rcx, rsi
mov r8b, 1
call fcn.00401c94
cmp dword [rsi], 3
je 0x405366
movdqu xmm0, xmmword [rsp + 0x1e0]
movdqu xmm1, xmmword [rsp + 0x1f0]
movdqa xmmword [rsp + 0x160], xmm1
movdqa xmmword [rsp + 0x150], xmm0
call fcn.0040ee2d
test rax, rax
je 0x405366
mov rsi, rax
mov rdi, rdx
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x403a14
mov bl, byte [rax + 0x4c]
mov bpl, byte [rax + 0x4d]
mov word [rax + 0x4c], 0x8001
jmp 0x403a16
mov r9, qword [rsp + 0x108]
mov rax, qword [rsp + 0x110]
mov qword [rsp + 0x20], rax
lea rdx, [0x004018d5]
lea rsi, [rsp + 0x220]
mov rcx, rsi
xor r8d, r8d
call fcn.00401c94
cmp dword [rsi], 3
je 0x405366
movdqu xmm0, xmmword [rsp + 0x220]
movdqu xmm1, xmmword [rsp + 0x230]
movdqa xmmword [rsp + 0x1d0], xmm1
movdqa xmmword [rsp + 0x1c0], xmm0
cmp qword [rsp + 0x108], 0
jne 0x405366
lea rsi, [rsp + 0x40]
xor ebp, ebp
xorps xmm6, xmm6
xor eax, eax
xchg qword [rsp + 0xd8], rax
test rax, rax
jne 0x403a71
mov qword [rsp + 0x150], 2
mov rax, qword [rsp + 0x100]
shr rax, 2
lea rcx, [rsp + 0xe0]
mov qword [rsp + 0x30], rcx
mov qword [rsp + 0x38], rax
movups xmmword [rsi + 0x19], xmm6
movups xmmword [rsi + 0x10], xmm6
movups xmmword [rsi], xmm6
mov eax, dword [rsp + 0x1a8]
mov ecx, dword [rsp + 0x1ab]
mov dword [rsi + 0x2c], ecx
mov dword [rsi + 0x29], eax
call fcn.0040ee2d
test rax, rax
je 0x405366
mov rbx, rax
mov r14, rdx
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x403558
mov cl, byte [rax + 0x4c]
mov byte [rsp + 0x90], cl
mov cl, byte [rax + 0x4d]
mov byte [rsp + 0x88], cl
mov word [rax + 0x4c], 0x8001
jmp 0x403560
mov byte [rsp + 0x90], 2
mov r15, qword [rsp + 0x30]
lea rdi, [r15 + 0x18]
movzx eax, byte [rsp + 0x68]
test rax, rax
je 0x403617
cmp eax, 1
jne 0x40380b
mov rax, qword [rsp + 0x60]
cmp rax, 3
jae 0x405366
test rax, rax
jne 0x4037e2
mov rcx, r15
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov al, byte [r15 + 8]
mov rax, qword [rsp + 0x60]
cmp rax, 3
jae 0x405366
test rax, rax
jne 0x40380f
mov rax, qword [r15 + 0x20]
shr rax, 2
mov r13, qword [rsp + 0x50]
cmp rax, qword [rsp + 0x38]
je 0x40398b
mov rax, qword [rsp + 0x40]
mov r12, qword [rsp + 0x58]
mov qword [rsp + 0x50], 0
test rax, rax
je 0x4036b0
mov rcx, qword [rsp + 0x48]
mov qword [rax + 8], rcx
mov rax, qword [rsp + 0x48]
test rax, rax
je 0x4036de
mov rcx, qword [rsp + 0x40]
mov qword [rax], rcx
movups xmmword [rsi], xmm6
jmp 0x4036ea
mov rcx, qword [r15 + 0x20]
and rcx, 0xfffffffffffffffc
lea rax, [rcx + 2]
lock cmpxchg qword [r15 + 0x20], rcx
jne 0x403635
mov byte [rsp + 0x68], 2
jmp 0x403569
mov rcx, r14
call qword [rbx]
mov r12, rax
mov r13, rdx
mov rcx, r15
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov al, byte [r15 + 8]
mov rcx, qword [r15 + 0x20]
mov rax, rcx
shr rax, 2
cmp rax, qword [rsp + 0x38]
jne 0x4036c4
mov rax, rcx
and rax, 3
je 0x40368d
cmp eax, 2
jne 0x40370c
and rcx, 0xfffffffffffffffc
lea rax, [rcx + 2]
lock cmpxchg qword [r15 + 0x20], rcx
je 0x4036c4
mov rcx, rax
test cl, 3
je 0x40365e
jmp 0x405366
and rcx, 0xfffffffffffffffc
lea rdx, [rcx + 1]
mov rax, rcx
lock cmpxchg qword [r15 + 0x20], rdx
je 0x403715
mov rcx, rax
and eax, 3
cmp eax, 2
je 0x40365e
jmp 0x405366
cmp qword [r15 + 0x10], rsi
jne 0x4036ea
mov rax, qword [rsp + 0x48]
mov qword [r15 + 0x10], rax
jmp 0x4035fe
mov byte [rsp + 0x68], 2
mov rcx, r15
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
mov rcx, r13
call qword [r12 + 0x18]
jmp 0x403569
mov rax, rdi
cmp qword [rdi], rsi
je 0x403607
mov byte [rsp + 0x68], 2
mov rcx, r15
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
test r13, r13
je 0x403569
mov rcx, r12
call qword [r13 + 0x18]
jmp 0x403569
cmp eax, 1
jne 0x405366
mov rdx, rdi
mov rdi, rbp
mov rcx, rsi
mov rsi, qword [rsp + 0x50]
mov rbp, qword [rsp + 0x58]
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x58], r13
mov rax, qword [r15 + 0x10]
cmp rax, rcx
je 0x405366
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x40], 0
test rax, rax
lea rcx, [rsp + 0x40]
je 0x40375a
mov qword [rax], rcx
mov qword [r15 + 0x10], rcx
cmp qword [r15 + 0x18], 0
jne 0x40376d
lea rax, [rsp + 0x40]
mov qword [rdx], rax
mov byte [rsp + 0x68], 1
mov rcx, r15
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
test rsi, rsi
je 0x403785
mov rcx, rbp
call qword [rsi + 0x18]
test dil, dil
mov r15b, byte [rsp + 0x90]
jne 0x405366
lea rax, str.hello__world__n
mov qword [rsp + 0x1e0], rax
mov qword [rsp + 0x1e8], 1
lea rax, [0x00416f30]
mov qword [rsp + 0x1f0], rax
movups xmmword [rsp + 0x1f8], xmm6
lea rcx, [rsp + 0x1e0]
call fcn.0040b58c
mov bpl, 1
mov dil, 1
lea rsi, [rsp + 0x40]
jmp 0x403852
mov rax, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x58]
mov qword [rsp + 0x50], 0
test rax, rax
je 0x4037fd
call qword [rax + 0x18]
mov qword [rsp + 0x60], 0
mov byte [rsp + 0x68], 2
xor edi, edi
jmp 0x40384a
mov rsi, qword [rsp + 0x50]
mov r12, qword [rsp + 0x58]
mov qword [rsp + 0x50], 0
mov qword [rsp + 0x60], 0
mov rcx, r15
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
test rsi, rsi
je 0x40383e
mov rcx, r12
call qword [rsi + 0x18]
mov byte [rsp + 0x68], 2
xor edi, edi
lea rsi, [rsp + 0x40]
mov r15b, byte [rsp + 0x90]
cmp r15b, 2
je 0x403872
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x403872
mov byte [rax + 0x4c], r15b
mov cl, byte [rsp + 0x88]
mov byte [rax + 0x4d], cl
mov rcx, r14
call qword [rbx + 0x18]
cmp byte [rsp + 0x68], 1
jne 0x403950
mov rbx, qword [rsp + 0x30]
mov rcx, rbx
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov al, byte [rbx + 8]
mov r8, qword [rbx + 0x20]
mov rax, qword [rsp + 0x60]
cmp rax, 3
jae 0x405366
lea rcx, [rbx + 0x10]
mov rdx, qword [rsp + 0x40]
test rdx, rdx
je 0x4038d4
mov r9, qword [rsp + 0x48]
mov qword [rdx + 8], r9
mov rdx, qword [rsp + 0x48]
test rdx, rdx
je 0x4038e3
mov r9, qword [rsp + 0x40]
mov qword [rdx], r9
movups xmmword [rsi], xmm6
jmp 0x4038ed
cmp qword [rcx], rsi
jne 0x4038ed
mov rdx, qword [rsp + 0x48]
mov qword [rcx], rdx
jmp 0x4038c2
cmp qword [rbx + 0x18], rsi
je 0x4039af
mov r9, qword [rbx + 0x10]
test r9, r9
jne 0x403901
cmp qword [rbx + 0x18], 0
jne 0x405366
lea rdx, [rbx + 0x20]
test r9, r9
jne 0x403921
mov r9d, r8d
and r9d, 3
cmp r9d, 1
jne 0x403921
and r8, 0xfffffffffffffffc
mov r9, r8
xchg qword [rdx], r9
cmp rax, 1
jne 0x403948
call fcn.00412a6f
test rax, rax
je 0x403948
mov r14, rax
mov r15, rdx
mov rcx, rbx
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
mov rcx, r15
call qword [r14 + 8]
jmp 0x403950
mov rcx, rbx
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
test dil, dil
jne 0x403f4e
mov rax, qword [rsp + 0x50]
test rax, rax
je 0x40396b
mov rcx, qword [rsp + 0x58]
call qword [rax + 0x18]
cmp dword [rsp + 0x150], 2
je 0x4034c0
lea rcx, [rsp + 0x150]
call fcn.0040176f
jmp 0x4034c0
test r13, r13
je 0x4039b8
mov rax, qword [rbx]
cmp qword [rsp + 0x58], r14
jne 0x4039aa
cmp qword [r13], rax
jne 0x4039aa
mov rcx, qword [r13 + 8]
cmp rcx, qword [rbx + 8]
je 0x4039f0
mov rdi, rbp
jmp 0x4039be
lea rdx, [rbx + 0x18]
jmp 0x4038c7
mov rdi, rbp
mov rax, qword [rbx]
mov rcx, r14
call rax
mov rsi, qword [rsp + 0x50]
mov r12, qword [rsp + 0x58]
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], rdx
mov rcx, r15
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
test rsi, rsi
je 0x403785
mov rcx, r12
jmp 0x403782
mov rdi, rbp
mov rcx, qword [r13 + 0x10]
cmp rcx, qword [rbx + 0x10]
jne 0x4039be
mov rcx, qword [r13 + 0x18]
cmp rcx, qword [rbx + 0x18]
jne 0x4039be
mov rcx, r15
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
jmp 0x403785
mov bl, 2
lea rax, str.hello__world__n
lea rcx, [rsp + 0x30]
mov qword [rcx], rax
mov qword [rcx + 8], 1
lea rax, [0x00416f30]
mov qword [rcx + 0x10], rax
pxor xmm0, xmm0
movdqu xmmword [rcx + 0x18], xmm0
call fcn.0040b58c
cmp bl, 2
je 0x403a5e
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x403a5e
mov byte [rax + 0x4c], bl
mov byte [rax + 0x4d], bpl
mov rcx, rdi
call qword [rsi + 0x18]
lea rsi, [rsp + 0x150]
jmp 0x4040d6
mov rcx, qword [rsp + 0x110]
lock inc qword [rcx]
jle 0x405366
pxor xmm0, xmm0
lea rdx, [rsp + 0x180]
movdqu xmmword [rdx], xmm0
xor edx, edx
lea rsi, [rsp + 0x150]
mov qword [rsi + 0x20], rdx
mov qword [rsi + 0x28], 8
mov qword [rsi], rdx
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], rdx
mov qword [rsi + 0x18], rax
lea rax, [rsp + 0xd8]
mov qword [rsi + 0x40], rax
lea r14, [rsp + 0x30]
mov ecx, 9
mov rdi, r14
rep movsq qword [rdi], qword [rsi]
cmp qword [r14], rdx
jne 0x405366
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
mov r12, qword [rsp + 0x48]
mov qword [rsp + 0x48], 0
test r12, r12
je 0x405366
mov qword [rsp + 0x90], rbp
mov qword [rsp + 0x40], 0
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x405381
mov rbx, rax
lea rax, [rsp + 0x48]
mov rbp, qword [rbx + 0x38]
mov qword [rbx + 0x38], r14
mov rax, qword [rax - 0x10]
mov byte [rax + 0xc8], 1
lea r14, [rsp + 0x48]
xor r15d, r15d
xchg byte [rax + 0xc8], r15b
test r15b, r15b
jne 0x405279
mov r8, qword [rsp + 0x38]
mov edi, dword [r8 + 0x58]
test edi, edi
je 0x403d05
cmp byte [r12 + 0x30], 0
jne 0x403f80
mov eax, dword [r12 + 0x28]
mov r8d, dword [r12 + 0x2c]
inc eax
mov dword [r12 + 0x28], eax
test r8d, r8d
je 0x405366
mov rcx, qword [rsp + 0x38]
xor edx, edx
div r8d
test edx, edx
je 0x403be4
mov rdx, qword [r12 + 0x18]
test rdx, rdx
je 0x403c42
mov rcx, qword [r12 + 8]
mov rax, qword [r12 + 0x10]
lea r8, [rax + 1]
cmp r8, rcx
mov r8d, 0
cmovae r8, rcx
neg r8
lea rcx, [rax + r8]
inc rcx
mov qword [r12 + 0x10], rcx
dec rdx
mov qword [r12 + 0x18], rdx
jmp 0x403c38
add rcx, 0x98
call fcn.0040f023
mov r13, rax
test rax, rax
jne 0x403c5a
mov rcx, qword [r12 + 0x18]
test rcx, rcx
je 0x403d23
mov rdx, qword [r12 + 8]
mov rax, qword [r12 + 0x10]
lea r8, [rax + 1]
cmp r8, rdx
mov r8d, 0
cmovae r8, rdx
neg r8
lea rdx, [rax + r8]
inc rdx
mov qword [r12 + 0x10], rdx
dec rcx
mov qword [r12 + 0x18], rcx
mov rcx, qword [r12]
mov r13, qword [rcx + rax*8]
jmp 0x403c5a
add rcx, 0x98
call fcn.0040f023
mov r13, rax
test rax, rax
je 0x403d23
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
mov rcx, r14
call fcn.00401c29
mov qword [rsp + 0x48], r12
inc qword [rsp + 0x40]
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x403c9d
mov r12b, byte [rax + 0x4c]
mov sil, byte [rax + 0x4d]
mov word [rax + 0x4c], 0x8001
jmp 0x403ca0
mov r12b, 2
mov rax, qword [r13 + 0x10]
mov rcx, r13
call qword [rax]
cmp r12b, 2
je 0x403cc3
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x403cc3
mov byte [rax + 0x4c], r12b
mov byte [rax + 0x4d], sil
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
mov r12, qword [rsp + 0x48]
mov qword [rsp + 0x48], 0
test r12, r12
je 0x405366
mov qword [rsp + 0x40], 0
dec edi
jne 0x403b6e
mov r8, qword [rsp + 0x38]
add r8, 0x10
lea rcx, [rsp + 0x38]
mov rdx, r12
call fcn.00410606
mov r12, rax
mov rax, qword [rsp + 0x38]
jmp 0x403b4a
movabs rax, 0x7fffffffffffffff
cmp qword [rsp + 0x50], rax
jae 0x405366
cmp qword [rsp + 0x68], 0
mov r13, qword [rsp + 0x38]
je 0x403d56
add r13, 0x10
lea rcx, [rsp + 0x38]
mov rdx, r12
mov r8, r13
jmp 0x403d11
mov r15, qword [r12 + 0x20]
mov qword [r12 + 0x20], 0
test r15, r15
je 0x405366
mov rdi, qword [r13 + 0x20]
test rdi, rdi
je 0x403e03
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
cmp qword [rsp + 0x48], 0
je 0x403da9
mov rcx, r14
call fcn.0040fe61
mov rax, qword [rsp + 0x40]
inc rax
jmp 0x403dab
xor eax, eax
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x40], rax
mov rax, qword [r13 + 0x28]
mov rcx, qword [rax + 0x10]
dec rcx
and rcx, 0xfffffffffffffff0
add rcx, rdi
add rcx, 0x10
call qword [rax + 0x28]
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
mov r12, qword [rsp + 0x48]
mov qword [rsp + 0x48], 0
test r12, r12
je 0x405366
mov qword [rsp + 0x40], 0
cmp qword [r12 + 0x18], 0
jne 0x403e92
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
cmp qword [rsp + 0x48], 0
je 0x403e3e
mov rcx, r14
call fcn.0040fe61
mov rax, qword [rsp + 0x40]
inc rax
jmp 0x403e40
xor eax, eax
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x40], rax
lea rcx, [r15 + 0x10]
call fcn.0040ef1b
lea rcx, [rsp + 0x50]
call fcn.0040fe12
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
mov r12, qword [rsp + 0x48]
mov qword [rsp + 0x48], 0
test r12, r12
je 0x405366
mov qword [rsp + 0x40], 0
mov rdi, qword [r13 + 0x30]
test rdi, rdi
je 0x403f28
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
cmp qword [rsp + 0x48], 0
je 0x403ece
mov rcx, r14
call fcn.0040fe61
mov rax, qword [rsp + 0x40]
inc rax
jmp 0x403ed0
xor eax, eax
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x40], rax
mov rax, qword [r13 + 0x38]
mov rcx, qword [rax + 0x10]
dec rcx
and rcx, 0xfffffffffffffff0
add rcx, rdi
add rcx, 0x10
call qword [rax + 0x28]
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
mov r12, qword [rsp + 0x48]
mov qword [rsp + 0x48], 0
test r12, r12
je 0x405366
mov qword [rsp + 0x40], 0
lea r13, [r12 + 0x20]
mov rax, qword [r12 + 0x20]
test rax, rax
je 0x403f45
lock dec qword [rax]
jne 0x403f45
mov rcx, r13
call fcn.0040e3c1
mov qword [r13], r15
jmp 0x403d19
mov rax, qword [rsp + 0x50]
test rax, rax
je 0x403f60
mov rcx, qword [rsp + 0x58]
call qword [rax + 0x18]
cmp dword [rsp + 0x150], 2
je 0x4040ce
lea rcx, [rsp + 0x150]
call fcn.0040176f
jmp 0x4040ce
cmp qword [rsp + 0x40], 0
mov qword [rbx + 0x38], rbp
jne 0x405366
lea rbx, [rsp + 0x30]
mov qword [rbx + 0x10], 0xffffffffffffffff
lea rsi, [rsp + 0x48]
mov rcx, rsi
call fcn.00401c29
mov qword [rbx + 0x18], r12
inc qword [rbx + 0x10]
mov rcx, rbx
call fcn.0041052b
cmp qword [rbx], 0
je 0x404067
mov rax, qword [rsp + 0x38]
lock dec qword [rax]
jne 0x403fd9
lea rcx, [rsp + 0x38]
call fcn.0040ec22
mov rsi, qword [rsp + 0x48]
test rsi, rsi
je 0x404084
mov rcx, qword [rsi]
test rcx, rcx
je 0x404019
mov rax, 0xffffffffffffffc0
lock xadd qword [rcx], rax
cmp rax, 0x3f
jbe 0x405366
and rax, 0xffffffffffffffc0
cmp rax, 0x40
jne 0x404019
mov rcx, qword [rsi]
mov rax, qword [rcx + 0x10]
call qword [rax + 0x10]
lea rdi, [rsi + 0x18]
mov rcx, rdi
call fcn.00411658
mov rax, qword [rsi + 0x18]
lock dec qword [rax]
jne 0x404037
mov rcx, rdi
call fcn.0040e238
mov rax, qword [rsi + 8]
test rax, rax
je 0x404052
lock dec qword [rax]
jne 0x404052
add rsi, 8
mov rcx, rsi
call fcn.0040e27c
mov r8, qword [rsp + 0x48]
mov rcx, qword [0x0041a090]
xor edx, edx
call fcn.00412bb4
jmp 0x404084
mov rax, qword [rsp + 0x38]
lock dec qword [rax]
jne 0x40407c
lea rcx, [rsp + 0x38]
call fcn.0040e098
mov rcx, rsi
call fcn.00401c29
mov rsi, qword [rsp + 0x68]
test rsi, rsi
je 0x4040aa
mov rdi, qword [rsp + 0x58]
add rdi, 8
mov rax, qword [rdi - 8]
mov rcx, qword [rdi]
call qword [rax + 0x18]
add rdi, 0x10
dec rsi
jne 0x404097
cmp qword [rsp + 0x60], 0
je 0x4040c5
mov r8, qword [rsp + 0x58]
mov rcx, qword [0x0041a090]
xor edx, edx
call fcn.00412bb4
test r15b, r15b
je 0x405366
lea rsi, [rsp + 0x1c0]
mov ecx, dword [rsi + 0x18]
mov edx, dword [rsi + 0x1c]
call fcn.0041004c
mov rcx, rsi
call fcn.00401719
lea rbx, [rsp + 0x110]
lea rcx, [rsp + 0x130]
call fcn.00401719
cmp qword [rbx - 0x40], 0
je 0x40414b
cmp qword [rsp + 0x108], 0
je 0x405366
mov rsi, qword [rsp + 0x110]
lea rdi, [rsi + 0xd0]
mov rcx, rdi
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov al, byte [rsi + 0xd8]
cmp byte [rsi + 0x108], 0
je 0x40424a
mov rcx, rdi
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
jmp 0x4043a1
mov rdx, qword [rsp + 0x108]
mov r8, qword [rsp + 0x110]
lea rcx, [rsp + 0x1c0]
call fcn.00410429
cmp qword [rsp + 0x108], 0
jne 0x405366
xor esi, esi
xchg qword [rsp + 0xd8], rsi
test rsi, rsi
je 0x405366
mov rdi, qword [rsp + 0x110]
lock inc qword [rdi]
jle 0x405366
xor eax, eax
mov qword [rsp + 0x170], rax
mov qword [rsp + 0x178], 8
pxor xmm0, xmm0
movdqu xmmword [rsp + 0x180], xmm0
mov qword [rsp + 0x150], rax
mov qword [rsp + 0x158], rdi
mov qword [rsp + 0x160], rax
mov qword [rsp + 0x168], rsi
lea rax, [rsp + 0xd8]
mov qword [rsp + 0x190], rax
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x404214
movabs rcx, 0x7fffffffffffffff
cmp qword [rax], rcx
jae 0x405366
cmp dword [rax + 8], 2
jne 0x404293
xor r15d, r15d
lea r14, [rsp + 0x150]
mov qword [r14 + 0x18], r15
add rdi, 0x10
mov rcx, rsi
mov rdx, rdi
call fcn.0040febf
mov qword [r14 + 0x18], rsi
mov qword [r14 + 0x10], r15
mov rcx, r14
call fcn.0041052b
mov rcx, r14
jmp 0x404385
mov byte [rsi + 0x108], 1
mov rcx, rdi
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
mov rdi, qword [rsi + 0x68]
test rdi, rdi
je 0x4043a1
mov r14, qword [rsi + 0x60]
add rsi, 0x138
shl rdi, 4
xor r15d, r15d
mov rcx, qword [r14 + r15 + 8]
mov rdx, rsi
call fcn.0040f09e
add r15, 0x10
cmp rdi, r15
jne 0x404278
jmp 0x4043a1
lea r14, [rsp + 0x30]
lea rsi, [rsp + 0x150]
mov ecx, 9
mov rdi, r14
rep movsq qword [rdi], qword [rsi]
cmp qword [r14], 0
jne 0x405366
cmp qword [rsp + 0x40], 0
jne 0x405366
mov rsi, qword [rsp + 0x48]
mov qword [rsp + 0x48], 0
test rsi, rsi
je 0x405366
lea rax, [rsp + 0x38]
mov qword [rax + 8], 0
mov qword [rsp + 0x1e0], r14
mov qword [rsp + 0x1e8], rbx
mov qword [rsp + 0x1f0], rsi
mov qword [rsp + 0x1f8], rax
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x4053cb
mov rdi, rax
mov r15, qword [rax + 0x38]
mov qword [rax + 0x38], r14
mov rdx, qword [rsp + 0x110]
add rdx, 0x10
mov rcx, rsi
call fcn.0040febf
mov qword [rdi + 0x38], r15
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
cmp qword [rsp + 0x48], 0
je 0x40436b
lea rdi, [rsp + 0x48]
mov rcx, rdi
call fcn.0040fe61
mov rax, qword [rdi - 8]
inc rax
jmp 0x40436d
xor eax, eax
lea rdi, [rsp + 0x30]
mov qword [rdi + 0x18], rsi
mov qword [rdi + 0x10], rax
mov rcx, rdi
call fcn.0041052b
mov rcx, rdi
call fcn.00410487
cmp dword [rsp + 0x1c0], 3
je 0x4043a1
lea rcx, [rsp + 0x1c0]
call fcn.0040e045
cmp qword [rsp + 0xd0], 0
jne 0x4043ca
xor eax, eax
xchg qword [rsp + 0xd8], rax
mov qword [rsp + 0x30], rax
test rax, rax
je 0x4043ca
lea rcx, [rsp + 0x30]
call fcn.0040fe61
cmp qword [rsp + 0x108], 0
je 0x4043ed
mov rax, qword [rsp + 0x110]
lock dec qword [rax]
jne 0x404403
mov rcx, rbx
call fcn.0040e10e
jmp 0x404403
mov rax, qword [rsp + 0x110]
lock dec qword [rax]
jne 0x404403
mov rcx, rbx
call fcn.0040e098
lea rax, [rsp + 0x120]
mov rdi, qword [rax - 8]
lea rsi, [rdi + 0x40]
mov rcx, rsi
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov al, byte [rdi + 0x48]
cmp byte [rdi + 0xcc], 0
je 0x404434
mov rcx, rsi
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
jmp 0x40514c
mov byte [rdi + 0xcc], 1
mov rax, qword [rdi + 0xa0]
test rax, rax
je 0x404459
lock dec qword [rax]
jne 0x404459
lea rcx, [rdi + 0xa0]
call fcn.0040dfb6
xor ebx, ebx
mov qword [rdi + 0xa0], rbx
mov ecx, 0xd0
add rcx, qword [rsp + 0x118]
call sub.KERNEL32.dll_WakeAllConditionVariable
mov rax, qword [rdi + 0xb8]
mov qword [rsp + 0x1d0], rax
movups xmm0, xmmword [rdi + 0xa8]
movaps xmmword [rsp + 0x1c0], xmm0
mov qword [rdi + 0xa8], rbx
call fcn.00410177
mov r15, qword [rdi + 0x70]
mov rcx, qword [rdi + 0x78]
mov qword [rsp + 0x88], rcx
mov rcx, qword [rdi + 0x88]
mov qword [rsp + 0x90], rcx
movups xmm0, xmmword [0x00416f40]
movups xmmword [rdi + 0x70], xmm0
movdqu xmm0, xmmword [0x00416f50]
movdqu xmmword [rdi + 0x80], xmm0
mov qword [rdi + 0x90], rax
mov qword [rdi + 0x98], rdx
mov rcx, rsi
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x404504
cmp byte [rax + 0x4e], 2
jne 0x405366
call fcn.0040ee2d
test rax, rax
je 0x4046b0
mov rdi, rax
mov rbx, rdx
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x404534
mov sil, byte [rax + 0x4c]
mov bpl, byte [rax + 0x4d]
mov word [rax + 0x4c], 0x8001
jmp 0x404537
mov sil, 2
mov r13, qword [rsp + 0x120]
test r13, r13
je 0x405366
xor r14d, r14d
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x40457a
mov r14b, byte [rax + 0x4c]
mov r12b, byte [rax + 0x4d]
mov ecx, r12d
test r14b, r14b
je 0x404575
test r12b, r12b
je 0x404629
lea ecx, [r12 - 1]
mov byte [rax + 0x4d], cl
jmp 0x40457d
xor r12d, r12d
mov rax, qword [r13 + 0x30]
test al, 2
jne 0x40463a
test al, 4
jne 0x404669
test al, 1
je 0x4045e7
cmp qword [r13 + 0x28], rbx
jne 0x4045c5
mov rax, qword [r13 + 0x20]
mov rcx, qword [rax]
cmp rcx, qword [rdi]
jne 0x4045c5
mov rcx, qword [rax + 8]
cmp rcx, qword [rdi + 8]
jne 0x4045c5
mov rcx, qword [rax + 0x10]
cmp rcx, qword [rdi + 0x10]
jne 0x4045c5
mov rax, qword [rax + 0x18]
cmp rax, qword [rdi + 0x18]
je 0x40460b
mov rax, qword [r13 + 0x30]
mov rcx, rax
and rcx, 0xfffffffffffffffe
lock cmpxchg qword [r13 + 0x30], rcx
jne 0x4045c9
test al, 2
jne 0x404634
mov rax, qword [r13 + 0x20]
mov rcx, qword [r13 + 0x28]
call qword [rax + 0x18]
mov rcx, rbx
call qword [rdi]
mov qword [r13 + 0x20], rax
mov qword [r13 + 0x28], rdx
mov rax, qword [r13 + 0x30]
mov rcx, rax
or rcx, 1
lock cmpxchg qword [r13 + 0x30], rcx
jne 0x4045f8
test al, 2
jne 0x40463a
mov r13b, 1
test r14b, r14b
je 0x40466c
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x40466c
mov byte [rax + 0x4c], 1
mov byte [rax + 0x4d], r12b
jmp 0x40466c
mov rcx, rbx
call qword [rdi + 0x10]
mov r13b, 1
jmp 0x40466c
lock or qword [r13 + 0x30], 1
mov al, byte [r13 + 0x38]
mov byte [r13 + 0x38], 0
xor al, 1
test al, al
jne 0x404669
lock dec qword [r13]
jne 0x40465d
lea rcx, [rsp + 0x120]
call fcn.0040e73b
mov qword [rsp + 0x120], 0
xor r13d, r13d
cmp sil, 2
je 0x404686
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x404686
mov byte [rax + 0x4c], sil
mov byte [rax + 0x4d], bpl
test r13b, r13b
je 0x4046aa
call fcn.0040e957
test rax, rax
je 0x405366
mov rcx, qword [rax]
add rcx, 0x10
call fcn.0040ef1b
jmp 0x404518
mov rcx, rbx
call qword [rdi + 0x18]
cmp qword [rsp + 0x1c0], 0
je 0x4046d5
lea rcx, [rsp + 0x1c0]
call fcn.0041073f
test rax, rax
je 0x4046d5
mov rcx, rax
call fcn.0040df77
movdqa xmm0, xmmword [r15]
mov r11, qword [rsp + 0x88]
test r11, r11
je 0x404708
mov rax, r11
shl rax, 5
lea rdx, [r11 + rax]
add rdx, 0x31
mov r8, r15
sub r8, rax
add r8, 0xffffffffffffffe0
mov r9d, 0x10
jmp 0x40470b
xor r9d, r9d
lea rcx, [r15 + 0x10]
pmovmskb r10d, xmm0
mov eax, r10d
not eax
add r11, r15
inc r11
mov qword [rsp + 0x150], r9
mov qword [rsp + 0x158], rdx
mov qword [rsp + 0x160], r8
mov qword [rsp + 0x168], r15
mov qword [rsp + 0x170], rcx
mov qword [rsp + 0x178], r11
mov word [rsp + 0x180], ax
mov rdx, qword [rsp + 0x90]
mov qword [rsp + 0x188], rdx
test rdx, rdx
je 0x4049af
cmp r10w, 0xffff
jne 0x4047a3
movdqa xmm0, xmmword [rcx]
pmovmskb eax, xmm0
add r15, 0xfffffffffffffe00
add rcx, 0x10
cmp eax, 0xffff
je 0x404777
not eax
mov qword [rsp + 0x170], rcx
mov qword [rsp + 0x168], r15
lea ecx, [rax - 1]
and ecx, eax
mov word [rsp + 0x180], cx
dec rdx
mov qword [rsp + 0x188], rdx
bsf eax, eax
shl rax, 5
sub r15, rax
mov rsi, qword [r15 - 0x20]
mov rdi, qword [r15 - 0x18]
movdqu xmm0, xmmword [r15 - 0x10]
movdqa xmmword [rsp + 0x30], xmm0
test rdi, rdi
je 0x4049af
inc rdx
mov rax, 0xffffffffffffffff
cmovne rax, rdx
cmp rax, 5
mov ebx, 4
cmovae rbx, rax
mov rax, rbx
shr rax, 0x3a
jne 0x405366
mov rcx, rbx
shl rcx, 5
mov al, byte [0x0041a0c8]
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov qword [rax], rsi
mov qword [rax + 8], rdi
movaps xmm0, xmmword [rsp + 0x30]
movups xmmword [rax + 0x10], xmm0
lea rsi, [rsp + 0x1e0]
mov qword [rsi], rax
mov qword [rsi + 8], rbx
mov qword [rsi + 0x10], 1
movdqu xmm0, xmmword [rsp + 0x150]
movdqu xmm1, xmmword [rsp + 0x160]
movdqu xmm2, xmmword [rsp + 0x170]
movups xmm3, xmmword [rsp + 0x180]
movaps xmmword [rsp + 0x60], xmm3
movdqa xmmword [rsp + 0x40], xmm1
movdqa xmmword [rsp + 0x50], xmm2
movdqa xmmword [rsp + 0x30], xmm0
mov rdi, qword [rsp + 0x68]
movzx ecx, word [rsp + 0x60]
mov rbx, qword [rsp + 0x48]
mov r15d, 1
mov r14, qword [rsp + 0x50]
mov r10, 0xffffffffffffffff
mov edx, 1
test rdi, rdi
mov qword [rsp + 0xb8], rdx
je 0x4049c1
test cx, cx
je 0x4048e3
lea ebp, [rcx - 1]
and ebp, ecx
mov word [rsp + 0x60], bp
dec rdi
mov qword [rsp + 0x68], rdi
test rbx, rbx
jne 0x40491d
jmp 0x4049c1
movdqa xmm0, xmmword [r14]
pmovmskb ecx, xmm0
add rbx, 0xfffffffffffffe00
add r14, 0x10
cmp ecx, 0xffff
je 0x4048e3
not ecx
mov qword [rsp + 0x50], r14
mov qword [rsp + 0x48], rbx
lea ebp, [rcx - 1]
and ebp, ecx
mov word [rsp + 0x60], bp
dec rdi
mov qword [rsp + 0x68], rdi
bsf ecx, ecx
shl rcx, 5
mov r8, rbx
sub r8, rcx
mov r12, qword [r8 - 0x20]
mov r13, qword [r8 - 0x18]
movdqu xmm0, xmmword [r8 - 0x10]
movdqa xmmword [rsp + 0x220], xmm0
test r13, r13
je 0x4049c1
cmp rdx, qword [rsp + 0x1e8]
je 0x404984
mov rcx, rdx
shl rcx, 5
mov qword [rax + rcx], r12
mov qword [rax + rcx + 8], r13
movdqa xmm0, xmmword [rsp + 0x220]
movdqu xmmword [rax + rcx + 0x10], xmm0
inc rdx
mov qword [rsp + 0x1f0], rdx
dec r15
mov ecx, ebp
jmp 0x4048b1
mov r8, rdi
inc r8
cmove r8, r10
mov rcx, rsi
call fcn.00410383
mov r10, 0xffffffffffffffff
mov rdx, qword [rsp + 0xb8]
mov rax, qword [rsp + 0x1e0]
jmp 0x404950
lea rcx, [rsp + 0x150]
call fcn.00410eba
jmp 0x40514c
mov qword [rsp + 0x248], r15
lea rcx, [rsp + 0x30]
call fcn.00410eba
mov rdx, qword [rsp + 0xb8]
mov rax, qword [rsp + 0x1e0]
mov qword [rsp + 0x98], rax
mov rsi, qword [rsp + 0x1e8]
cmp rdx, 0x15
mov qword [rsp + 0x260], rsi
jae 0x404a30
cmp rdx, 1
jbe 0x4050ac
mov r8d, 1
mov rsi, qword [rsp + 0x98]
mov rcx, rsi
mov rbx, rdx
call fcn.0040eb52
shl rbx, 5
add rbx, rsi
jmp 0x4050c3
mov rax, rdx
shl rax, 4
movabs rcx, 0x7fffffffffffffff
add rcx, 0xffffffffffffffe1
and rcx, rax
mov al, byte [0x0041a0c8]
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rbp, rax
mov al, byte [0x0041a0c8]
mov ecx, 0x100
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov r12, rax
mov rax, qword [rsp + 0x98]
lea rcx, [rax + 0x40]
mov qword [rsp + 0x240], rcx
add rax, 0xffffffffffffffe0
mov qword [rsp + 0x1a0], rax
mov eax, 0x10
mov qword [rsp + 0x250], rax
xor r13d, r13d
xor edi, edi
mov r10, qword [rsp + 0xb8]
mov r8, r10
sub r8, rdi
mov r9, rdi
shl r9, 5
mov rax, qword [rsp + 0x98]
lea rcx, [rax + r9]
cmp r8, 2
jae 0x404ae6
mov rax, r10
jmp 0x404c2c
mov rax, qword [rcx]
mov rdx, qword [rcx + 0x20]
cmp rdx, rax
jae 0x404b07
cmp r8, 2
jne 0x404b1c
lea rax, [rdi + 2]
mov r8d, 2
jmp 0x404bb0
cmp r8, 2
jne 0x404b5a
lea rax, [rdi + 2]
mov r8d, 2
jmp 0x404c2c
mov r10, qword [rsp + 0x248]
lea r11, [r10 + rdi]
add r9, qword [rsp + 0x240]
mov r10d, 2
mov rsi, rdx
mov rbx, rsi
mov rsi, qword [r9]
cmp rsi, rbx
jae 0x404b99
lea rbx, [r11 + r10]
inc rbx
inc r10
add r9, 0x20
cmp rbx, 2
jne 0x404b39
jmp 0x404b96
mov r10, qword [rsp + 0x248]
lea r11, [r10 + rdi]
add r9, qword [rsp + 0x240]
mov r10d, 2
mov rsi, rdx
mov rbx, rsi
mov rsi, qword [r9]
cmp rsi, rbx
jb 0x404b99
lea rbx, [r11 + r10]
inc rbx
inc r10
add r9, 0x20
cmp rbx, 2
jne 0x404b77
mov r10, r8
lea r9, [r10 + rdi]
mov r8, r10
cmp rdx, rax
mov rax, r9
mov r10, qword [rsp + 0xb8]
jae 0x404c2c
cmp rdi, rax
ja 0x405366
cmp rax, r10
ja 0x405366
cmp r8, 2
jb 0x404c2c
mov r11, rax
mov rax, r8
shr rax, 1
lea rdx, [rdi + r8]
shl rdx, 5
add rdx, qword [rsp + 0x1a0]
mov r9, rcx
movups xmm0, xmmword [r9]
movups xmm1, xmmword [r9 + 0x10]
movaps xmmword [rsp + 0x40], xmm1
movaps xmmword [rsp + 0x30], xmm0
movups xmm0, xmmword [rdx]
movups xmm1, xmmword [rdx + 0x10]
movups xmmword [r9 + 0x10], xmm1
movups xmmword [r9], xmm0
movdqa xmm0, xmmword [rsp + 0x30]
movdqa xmm1, xmmword [rsp + 0x40]
movdqu xmmword [rdx + 0x10], xmm1
movdqu xmmword [rdx], xmm0
add r9, 0x20
add rdx, 0xffffffffffffffe0
dec rax
jne 0x404be4
mov rax, r11
mov rsi, rax
sub rsi, rdi
jb 0x405366
cmp rax, r10
ja 0x405366
jae 0x404c7f
cmp r8, 0xa
jae 0x404c7f
lea rsi, [rdi + 0xa]
cmp rsi, r10
cmovae rsi, r10
mov qword [rsp + 0x258], rsi
sub rsi, rdi
jb 0x405366
cmp r8, 1
adc r8, 0
mov rdx, rsi
call fcn.0040eb52
mov r10, qword [rsp + 0xb8]
jmp 0x404c87
mov qword [rsp + 0x258], rax
mov r15, qword [rsp + 0x250]
cmp r13, r15
jne 0x404cf1
mov rcx, r15
shl rcx, 5
mov al, byte [0x0041a0c8]
mov edx, 8
call fcn.004018e0
test rax, rax
je 0x405366
mov rbx, rax
lea r14, [r15 + r15]
shl r15, 4
mov rcx, rax
mov rdx, r12
mov r8, r15
call sub.ntdll.dll_memcpy
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, r12
call fcn.00412bb4
mov r12, rbx
mov qword [rsp + 0x250], r14
mov r10, qword [rsp + 0xb8]
mov rax, r13
shl rax, 4
mov qword [r12 + rax], rsi
mov qword [r12 + rax + 8], rdi
inc r13
mov rax, r13
cmp r13, 2
mov qword [rsp + 0x218], r12
jb 0x405071
mov r13, rax
lea r11, [rax - 1]
mov rcx, r11
shl rcx, 4
mov rax, qword [r12 + rcx]
mov rcx, qword [r12 + rcx + 8]
add rcx, rax
cmp rcx, r10
je 0x404d84
mov rdx, r13
shl rdx, 4
mov r8, qword [rdx + r12 - 0x20]
cmp r8, rax
jbe 0x404d84
cmp r13, 2
jbe 0x405063
lea rsi, [r13 - 3]
mov rcx, rsi
shl rcx, 4
mov rcx, qword [r12 + rcx]
lea r9, [r8 + rax]
cmp rcx, r9
jbe 0x404d99
cmp r13, 3
jbe 0x40506b
add r8, rcx
cmp qword [rdx + r12 - 0x40], r8
jbe 0x404d99
jmp 0x405071
cmp r13, 3
jb 0x404d9e
lea rsi, [r13 - 3]
mov rcx, rsi
shl rcx, 4
mov rcx, qword [r12 + rcx]
cmp rcx, rax
jb 0x404da2
lea rsi, [r13 - 2]
cmp r13, rsi
jbe 0x405366
lea rax, [rsi + 1]
mov qword [rsp + 0x90], r13
cmp r13, rax
jbe 0x405366
mov r15, rbp
mov rcx, rsi
shl rcx, 4
mov rbx, qword [r12 + rcx + 8]
shl rax, 4
mov rdx, qword [r12 + rax]
mov r13, qword [r12 + rax + 8]
add r13, rdx
mov rbp, r13
sub rbp, rbx
jb 0x405366
mov qword [rsp + 0x88], rsi
cmp r13, r10
ja 0x405366
mov qword [rsp + 0x1b8], rdx
mov qword [rsp + 0xb0], r11
lea rdx, [r12 + rcx]
mov qword [rsp + 0xa8], rdx
mov r14, qword [r12 + rcx]
lea rcx, [r12 + rax]
mov qword [rsp + 0xa0], rcx
add rax, r12
add rax, 8
mov qword [rsp + 0xc8], rax
mov qword [rsp + 0xc0], rbx
shl rbx, 5
add rbx, qword [rsp + 0x98]
mov r12, r14
shl r12, 5
lea rsi, [rbx + r12]
shl r13, 5
mov rdi, rbp
sub rdi, r14
cmp rdi, r14
jae 0x404f1b
mov r12, rdi
shl r12, 5
mov rbp, r15
mov rcx, r15
mov rdx, rsi
mov r8, r12
call sub.ntdll.dll_memcpy
add r12, r15
test r14, r14
jle 0x404fb3
test rdi, rdi
jle 0x404fb3
add r13, qword [rsp + 0x1a0]
mov rdi, qword [rsp + 0x88]
mov r15, qword [rsp + 0xa8]
mov rax, rsi
mov rcx, r12
mov rdx, qword [r12 - 0x20]
mov r8, qword [rsi - 0x20]
cmp rdx, r8
mov esi, 0
sbb rsi, rsi
cmp rdx, r8
mov r12d, 0
adc r12, 0xffffffffffffffff
shl rsi, 5
add rsi, rax
shl r12, 5
add r12, rcx
cmp rdx, r8
mov rax, r12
cmovb rax, rsi
movdqu xmm0, xmmword [rax]
movdqu xmm1, xmmword [rax + 0x10]
movdqu xmmword [r13 + 0x10], xmm1
movdqu xmmword [r13], xmm0
cmp rsi, rbx
jbe 0x404f10
add r13, 0xffffffffffffffe0
cmp r12, rbp
ja 0x404eae
mov rbx, rsi
mov rdx, rbp
jmp 0x404fe4
mov rdi, r15
mov rcx, r15
mov rdx, rbx
mov r8, r12
call sub.ntdll.dll_memcpy
add r12, r15
test r14, r14
jle 0x404fbb
mov rax, r14
cmp rbp, r14
mov rdi, qword [rsp + 0x88]
jle 0x404fd3
add r13, qword [rsp + 0x98]
mov rbp, r15
mov rdx, r15
mov r15, qword [rsp + 0xa8]
mov r14, rax
mov r8, rdx
mov rcx, qword [rsi]
xor edx, edx
xor eax, eax
cmp rcx, qword [r8]
setae dl
setb cl
mov r9, r8
cmovb r9, rsi
movdqu xmm0, xmmword [r9]
movdqu xmm1, xmmword [r9 + 0x10]
movdqu xmmword [rbx + 0x10], xmm1
movdqu xmmword [rbx], xmm0
add rbx, 0x20
shl rdx, 5
add rdx, r8
cmp rdx, r12
jae 0x404fe4
mov al, cl
shl rax, 5
add rsi, rax
cmp rsi, r13
jb 0x404f65
jmp 0x404fe4
mov rbx, rsi
mov rdx, rbp
jmp 0x404fc1
mov rbp, r15
mov rdx, r15
mov rdi, qword [rsp + 0x88]
mov r15, qword [rsp + 0xa8]
jmp 0x404fe4
mov rbp, r15
mov rdx, r15
mov r15, qword [rsp + 0xa8]
mov r14, rax
sub r12, rdx
mov rcx, rbx
mov r8, r12
call sub.ntdll.dll_memcpy
mov rax, qword [rsp + 0x1b8]
add rax, r14
mov rcx, qword [rsp + 0xa0]
mov qword [rcx], rax
mov rax, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0xc8]
mov qword [rcx], rax
lea rdx, [r15 + 0x10]
not rdi
mov r8, qword [rsp + 0x90]
add r8, rdi
shl r8, 4
mov rcx, r15
call sub.ntdll.dll_memmove
mov rax, qword [rsp + 0xb0]
cmp rax, 1
mov r10, qword [rsp + 0xb8]
mov r12, qword [rsp + 0x218]
ja 0x404d19
mov r13d, 1
jmp 0x405071
mov r13d, 2
jmp 0x405071
mov r13d, 3
mov rdi, qword [rsp + 0x258]
cmp rdi, r10
jb 0x404abf
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, r12
call fcn.00412bb4
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, rbp
call fcn.00412bb4
mov rdx, qword [rsp + 0xb8]
mov rbx, rdx
shl rbx, 5
mov rsi, qword [rsp + 0x98]
add rbx, rsi
test rdx, rdx
je 0x405111
lea r14, [rsp + 0x38]
lea rdi, [rsp + 0x30]
mov rsi, qword [rsp + 0x98]
mov rax, qword [rsi + 8]
test rax, rax
je 0x40510d
mov qword [rsp + 0x30], rax
movdqu xmm0, xmmword [rsi + 0x10]
movdqu xmmword [r14], xmm0
mov rcx, rdi
call fcn.0041073f
test rax, rax
je 0x405102
mov rcx, rax
call fcn.0040df77
add rsi, 0x20
cmp rsi, rbx
jne 0x4050d5
jmp 0x40512b
add rsi, 0x20
sub rbx, rsi
je 0x40512b
shr rbx, 5
mov rcx, rsi
call fcn.00410e74
add rsi, 0x20
dec rbx
jne 0x40511a
cmp qword [rsp + 0x260], 0
je 0x40514c
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, qword [rsp + 0x98]
call fcn.00412bb4
mov rax, qword [rsp + 0x118]
lock dec qword [rax]
jne 0x405167
lea rcx, [rsp + 0x118]
call fcn.0040e3e0
mov rcx, qword [rsp + 0x120]
test rcx, rcx
je 0x4051ba
mov rax, qword [rcx + 0x30]
mov rdx, rax
or rdx, 4
lock cmpxchg qword [rcx + 0x30], rdx
jne 0x405178
and eax, 0xa
cmp eax, 8
jne 0x40519a
mov rax, qword [rcx + 0x10]
mov rcx, qword [rcx + 0x18]
call qword [rax + 0x10]
mov rax, qword [rsp + 0x120]
test rax, rax
je 0x4051ba
lock dec qword [rax]
jne 0x4051ba
lea rcx, [rsp + 0x120]
call fcn.0040e73b
mov rax, qword [rsp + 0x2a0]
lock dec qword [rax]
jne 0x4051d5
lea rcx, [rsp + 0x2a0]
call fcn.0040e674
mov rax, qword [rsp + 0x2c0]
test rax, rax
je 0x4051f5
lock dec qword [rax]
jne 0x4051f5
lea rcx, [rsp + 0x2c0]
call fcn.0040e674
mov rax, qword [rsp + 0x2d0]
test rax, rax
je 0x405215
lock dec qword [rax]
jne 0x405215
lea rcx, [rsp + 0x2d0]
call fcn.0040e674
mov rax, qword [rsp + 0x2e0]
test rax, rax
je 0x405235
lock dec qword [rax]
jne 0x405235
lea rcx, [rsp + 0x2e0]
call fcn.0040e674
mov rax, qword [rsp + 0x2f0]
test rax, rax
je 0x405255
lock dec qword [rax]
jne 0x405255
lea rcx, [rsp + 0x2f0]
call fcn.0040e674
movaps xmm6, xmmword [rsp + 0x330]
movaps xmm7, xmmword [rsp + 0x340]
add rsp, 0x358
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
mov rcx, r14
call fcn.00401c29
mov qword [rsp + 0x48], r12
inc qword [rsp + 0x40]
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x4052bc
mov dil, byte [rax + 0x4c]
mov r14b, byte [rax + 0x4d]
mov word [rax + 0x4c], 0x8001
jmp 0x4052bf
mov dil, 2
cmp byte [rsp + 0x90], 0
jne 0x405366
lea rcx, [rsp + 0x1e0]
lea rax, str.hello__world__n
mov qword [rcx], rax
mov qword [rcx + 8], 1
lea rax, [0x00416f30]
mov qword [rcx + 0x10], rax
pxor xmm0, xmm0
movdqu xmmword [rcx + 0x18], xmm0
call fcn.0040b58c
cmp dil, 2
je 0x40531a
xor ecx, ecx
call fcn.0040e7dc
test rax, rax
je 0x40531a
mov byte [rax + 0x4c], dil
mov byte [rax + 0x4d], r14b
cmp qword [rsp + 0x40], 0
jne 0x405366
mov qword [rsp + 0x40], 0xffffffffffffffff
mov r12, qword [rsp + 0x48]
mov qword [rsp + 0x48], 0
test r12, r12
je 0x405366
mov qword [rsp + 0x40], 0
mov qword [rbx + 0x38], rbp
jmp 0x403f90
mov qword [rax], rcx
jmp 0x405366
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, rbx
call fcn.00412bb4
ud2
mov rcx, r13
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
jmp 0x405366
add rcx, 0x10
xor edx, edx
call fcn.0040d440
jmp 0x405366
mov rcx, r12
call fcn.00410f33
cmp qword [r12 + 8], 0
je 0x4053a3
mov r8, qword [r12]
mov rcx, qword [0x0041a090]
xor edx, edx
call fcn.00412bb4
mov rax, qword [r12 + 0x20]
test rax, rax
je 0x4053bd
lock dec qword [rax]
jne 0x4053bd
lea rcx, [r12 + 0x20]
call fcn.0040e3c1
mov rcx, qword [0x0041a090]
xor edx, edx
mov r8, r12
jmp 0x405361
lea rcx, [rsp + 0x1f0]
call fcn.0040fe61
jmp 0x405366