Function at 0x403569
Capabilities:
Allocate or change rwx memory
Check os version
Execute shellcode via indirect call
Resolve function by parsing pe exports

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
mov eax, 0x14a8
call fcn.0042ac40
sub rsp, rax
movaps xmmword [rsp + 0x1490], xmm7
movaps xmmword [rsp + 0x1480], xmm6
mov ebp, 0xffffffff
test r8, r8
je 0x404784
mov r14, r8
mov edi, edx
mov rsi, rcx
call fcn.00404971
test eax, eax
js 0x404784
mov rcx, qword [0x0045c5c8]
lea rdx, [rcx + 0x38]
mov eax, 1
cmp rax, 0x401
je 0x4035db
cmp byte [rdx], 1
jne 0x4035e0
inc rax
add rdx, 0x20
jmp 0x4035c5
mov eax, 0x401
mov edx, eax
mov r8, rdx
shl r8, 5
mov bl, 1
mov byte [rcx + r8 + 0x18], bl
lea rcx, [0x0045c5c8]
mov r8, qword [0x0045c5d8]
inc word [r8 + rdx*2]
mov r8, qword [0x0045c5d8]
movzx edx, word [r8 + rdx*2]
shl edx, 0x10
or edx, eax
mov dword [rsp + 0xec], edx
call fcn.0040507c
mov r15, rax
mov r13, qword [0x0045c588]
mov r12, qword [0x0045c590]
mov rcx, rax
call fcn.00403501
mov qword [rsp + 0x68], r15
mov byte [r15 + 0x19], bl
xor eax, eax
test al, al
jne 0x403687
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x60], r12
movsxd r15, edi
mov r9, qword [rsp + 0x14e8]
test r15d, r15d
mov qword [rsp + 0xb8], r9
je 0x403699
mov rbx, qword [rsp + 0x58]
mov rcx, rbx
mov rdx, r15
mov r8b, 9
mov rdi, qword [rsp + 0x60]
call qword [rdi]
mov rcx, rax
test rax, rax
jne 0x4036aa
mov rsi, qword [rsp + 0x68]
mov rcx, rsi
call fcn.00403501
jmp 0x404780
mov rcx, 0xfffffffffffffe00
mov rdi, qword [rsp + 0x60]
mov rbx, qword [rsp + 0x58]
mov qword [rsp + 0x170], r14
mov rdx, rsi
mov r8, r15
mov rsi, rcx
call fcn.00444170
xor r13d, r13d
lea rcx, [rsp + 0x390]
mov qword [rcx], rsi
mov qword [rsp + 0x130], r15
mov qword [rcx + 8], r15
and qword [rcx + 0x10], 0
mov byte [rsp + 0x34], r13b
mov byte [rsp + 0x2b], r13b
mov byte [rcx + 0x1c], r13b
mov al, byte [rsp + 0x2b]
mov byte [rcx + 0x1d], al
xorps xmm6, xmm6
lea rax, [rsp + 0x1d8]
movups xmmword [rax + 0x10], xmm6
mov qword [rax], rbx
mov qword [rax + 8], rdi
mov qword [rsp + 0xf0], rax
lea rax, [0x0045c290]
mov qword [rsp + 0xf8], rax
mov eax, dword [rsi + 0xc]
mov qword [rsp + 0x168], rax
mov rax, qword [rsp + 0xf0]
mov rcx, qword [rsp + 0xf8]
lea rdx, [rsp + 0x190]
mov qword [rdx + 0x18], rax
mov qword [rdx + 0x20], rcx
movups xmmword [rdx + 8], xmm6
movabs rax, 0xaaaaaaaaaaaaaaaa
mov qword [rdx], rax
movzx edi, word [rsi + 2]
movzx eax, word [rsi + 0x10]
mov qword [rsp + 0x50], rsi
add rax, rsi
add rax, 0x14
mov qword [rsp + 0x150], rax
mov rbx, rdi
shl rbx, 0xf
add rbx, 0x8000
xor ecx, ecx
mov rdx, rbx
mov r8d, 0x103000
mov r9d, 0x40
call sub.KERNEL32.dll_VirtualAlloc
mov rcx, qword [rsp + 0x68]
mov qword [rsp + 0x148], rax
mov qword [rcx], rax
mov qword [rcx + 8], rbx
movaps xmmword [rsp + 0x3c0], xmm6
movdqu xmm0, xmmword [rsp + 0xf0]
movdqa xmmword [rsp + 0x3d0], xmm0
movaps xmmword [rsp + 0x90], xmm6
movdqa xmmword [rsp + 0xa0], xmm0
mov qword [rsp + 0x178], rdi
imul rdi, rdi, 0x28
mov esi, 0x8000
lea r14, [rsp + 0x420]
lea r15, [rsp + 0x2f0]
cmp rdi, r13
je 0x4038c5
mov rax, qword [rsp + 0x150]
movups xmm0, xmmword [rax + r13]
movaps xmmword [rsp + 0x2f0], xmm0
mov ebx, dword [rax + r13 + 0x10]
mov r12d, dword [rax + r13 + 0x14]
movdqu xmm0, xmmword [rax + r13 + 0x18]
lea rax, [rsp + 0x308]
movdqu xmmword [rax], xmm0
mov dword [rsp + 0x300], ebx
mov dword [rsp + 0x304], r12d
mov rcx, r14
lea rdx, [rsp + 0x390]
mov r8, r15
call fcn.00402d39
test rbx, rbx
je 0x4038a3
mov rax, qword [rsp + 0x148]
lea rbp, [rax + rsi]
add r12, qword [rsp + 0x50]
mov rcx, rbp
mov rdx, r12
mov r8, rbx
call fcn.00444170
lea rcx, [rsp + 0x190]
mov rdx, rbp
mov r8, rbx
call fcn.00402ef2
test ax, ax
jne 0x404551
add rsi, 0x8000
jmp 0x4038bc
lea rcx, [rsp + 0x190]
xor r8d, r8d
call fcn.00402ef2
test ax, ax
jne 0x404551
add r13, 0x28
jmp 0x4037fd
mov rcx, qword [rsp + 0x50]
mov eax, dword [rcx + 8]
add rcx, rax
test rax, rax
cmove rcx, rax
mov qword [rsp + 0x140], rcx
lea rsi, [rsp + 0x400]
lea rdx, [rsp + 0x390]
mov rcx, rsi
call fcn.00403071
movzx ebx, word [rsi + 0x18]
test bx, bx
jne 0x4046bb
movdqu xmm0, xmmword [rsp + 0x400]
lea rax, [rsp + 0x1c0]
movdqa xmmword [rax], xmm0
lea rdi, [rsp + 0x118]
xorps xmm6, xmm6
lea rax, [rsp + 0x450]
mov qword [rsp + 0xd0], rax
xor ebp, ebp
cmp rbp, qword [rsp + 0x178]
je 0x4047ea
imul rax, rbp, 0x28
mov rdx, qword [rsp + 0x150]
mov rcx, qword [rdx + rax + 0x10]
mov qword [rsp + 0x2a0], rcx
movdqu xmm0, xmmword [rdx + rax]
movdqa xmmword [rsp + 0x290], xmm0
movzx r9d, word [rdx + rax + 0x20]
mov rsi, qword [rdx + rax + 0x18]
mov ecx, dword [rdx + rax + 0x22]
lea r8, [rsp + 0x2b2]
mov dword [r8], ecx
movzx eax, word [rdx + rax + 0x26]
mov word [r8 + 4], ax
mov qword [rsp + 0x2a8], rsi
mov qword [rsp + 0x188], r9
mov word [rsp + 0x2b0], r9w
lea rcx, [rsp + 0x438]
lea rdx, [rsp + 0x390]
lea r8, [rsp + 0x290]
call fcn.00402d39
mov eax, esi
add rax, qword [rsp + 0x50]
mov qword [rsp + 0x180], rax
xor r15d, r15d
mov qword [rsp + 0x138], rbp
cmp r15, qword [rsp + 0x188]
je 0x404549
imul rax, r15, 0xa
mov rdx, qword [rsp + 0x180]
mov ecx, dword [rdx + rax]
mov qword [rsp + 0xd8], rcx
mov ecx, dword [rdx + rax + 4]
movzx eax, word [rdx + rax + 8]
mov dword [rsp + 0x30], eax
imul rax, rcx, 0x12
mov r8, qword [rsp + 0x140]
mov rcx, qword [r8 + rax]
mov r10d, dword [r8 + rax + 8]
movzx edx, word [r8 + rax + 0x10]
xor r9d, r9d
mov byte [rsp + 0x38], r9b
mov ebx, dword [r8 + rax + 0xc]
mov qword [rsp + 0x70], r10
mov dword [rsp + 0x118], r10d
mov dword [rsp + 0x11c], ebx
mov qword [rsp + 0x120], rcx
mov word [rsp + 0x128], dx
mov byte [rsp + 0x12c], r9b
mov rcx, rdi
call fcn.004030d2
test rax, rax
jne 0x403a96
lea rcx, [rsp + 0x1b8]
mov rdx, rdi
call fcn.0040313f
mov edx, dword [rsp + 0x1b8]
lea rcx, [rsp + 0x1c0]
call fcn.00403191
mov r14, rax
mov rsi, rdx
cmp rdx, 6
mov qword [rsp + 0x78], r15
jbe 0x403ad5
mov edx, 6
mov r9d, 6
lea rcx, [0x0045c024]
mov r8, r14
call fcn.00402bce
test al, 1
je 0x403ad5
add r14, 6
add rsi, 0xfffffffffffffffa
mov al, 1
mov dword [rsp + 0x2c], eax
jmp 0x403add
mov dword [rsp + 0x2c], 0
mov r15, qword [0x0045c5a8]
cmp dword [0x0045c5b0], 0
lea rax, [0x00454b40]
je 0x403b90
mov rcx, r14
mov rdx, rsi
call fcn.00408bb0
mov rdi, rax
test r15, r15
je 0x403b16
mov r12d, dword [r15 - 8]
lea r13d, [r12 - 1]
jmp 0x403b1f
xor r12d, r12d
mov r13d, 0xffffffff
mov rbp, rdi
shr rbp, 0x39
and edi, r13d
mov al, byte [r15 + rdi]
sub r12d, 1
setb cl
test al, al
je 0x403b6f
test cl, cl
jne 0x403b6f
test al, al
jns 0x403b6a
and al, 0x7f
cmp bpl, al
jne 0x403b6a
mov rax, qword [r15 - 0x10]
mov rcx, rdi
shl rcx, 4
mov r8, qword [rax + rcx]
mov r9, qword [rax + rcx + 8]
mov rcx, r14
mov rdx, rsi
call fcn.00402bce
test al, 1
jne 0x403b78
inc rdi
jmp 0x403b26
lea rax, [0x00454b40]
jmp 0x403b90
mov qword [rsp + 0x450], rdi
mov byte [rsp + 0x458], 1
mov rax, qword [rsp + 0xd0]
movd xmm0, ebx
cmp byte [rax + 8], 0
movd ebp, xmm0
je 0x403bb7
mov rax, qword [rax]
mov rcx, qword [r15 - 0x18]
mov r15, qword [rcx + rax*8]
test bp, bp
sete cl
xor r13d, r13d
jmp 0x403f7b
test bp, bp
je 0x403bc9
mov r13b, 1
xor r15d, r15d
xor ecx, ecx
jmp 0x403f7b
lea rcx, [rsp + 0x320]
mov rdx, r14
mov r8, rsi
mov r9b, 0x24
call fcn.004032e5
cmp byte [rsp + 0x328], 0
je 0x403df4
mov qword [rsp + 0x2c0], r14
mov qword [rsp + 0x2c8], rsi
movups xmm7, xmmword [0x0044a5f8]
lea rax, [rsp + 0x2d0]
movups xmmword [rax], xmm7
lea rax, [0x0045c02b]
mov qword [rsp + 0x2e0], rax
mov qword [rsp + 0x2e8], 1
lea rcx, [rsp + 0x2c0]
call fcn.00403376
mov rdi, rax
mov rbx, rdx
mov rcx, rax
mov r8, r14
mov r9, rsi
call fcn.00402bce
mov qword [rsp + 0x1f8], rdi
mov qword [rsp + 0x200], rbx
lea rcx, [rsp + 0x248]
lea rdi, [rsp + 0xf0]
mov rdx, rdi
lea r8, [rsp + 0x1f8]
call fcn.00403303
movzx ebx, word [rsp + 0x258]
test bx, bx
jne 0x4046bb
mov r15, qword [rsp + 0x248]
mov rbx, rdi
mov rdi, qword [rsp + 0x250]
lea rcx, [rsp + 0x2c0]
call fcn.00403376
mov qword [rsp + 0x330], rax
mov qword [rsp + 0x338], rdx
lea rax, [rsp + 0x340]
movups xmmword [rax], xmm7
lea rax, [0x0045c02d]
mov qword [rsp + 0x350], rax
mov qword [rsp + 0x358], 1
lea rcx, [rsp + 0x330]
call fcn.00403376
mov qword [rsp + 0x208], rax
mov qword [rsp + 0x210], rdx
lea rcx, [rsp + 0x260]
mov rdx, rbx
lea r8, [rsp + 0x208]
call fcn.00403303
cmp word [rsp + 0x270], 0
jne 0x4045d6
mov rbx, qword [rsp + 0x260]
mov r12, qword [rsp + 0x268]
mov rcx, r15
call sub.KERNEL32.dll_GetModuleHandleA
test rax, rax
jne 0x403d4b
mov rcx, r15
call sub.KERNEL32.dll_LoadLibraryA
mov qword [rsp + 0xc8], r15
mov rcx, rax
mov qword [rsp + 0xc0], rbx
mov rdx, rbx
call sub.KERNEL32.dll_GetProcAddress
mov r15, rax
lea rax, [0x00454b40]
test r15, r15
je 0x403d8d
mov qword [rsp + 0x218], r15
mov byte [rsp + 0x220], 1
lea rax, [rsp + 0x218]
inc r12
mov al, byte [rax + 8]
mov byte [rsp + 0x28], al
mov rbx, qword [rsp + 0xb8]
mov qword [rsp + 0x20], rbx
xor r13d, r13d
lea rcx, [rsp + 0x1d8]
mov rdx, qword [rsp + 0xc0]
mov r8, r12
xor r9d, r9d
call qword [0x0045c2a0]
inc rdi
mov qword [rsp + 0x20], rbx
lea rcx, [rsp + 0x1d8]
mov rdx, qword [rsp + 0xc8]
mov r8, rdi
xor r9d, r9d
call qword [0x0045c2a0]
mov cl, 1
cmp byte [rsp + 0x28], 0
jne 0x403f7b
mov qword [rsp + 0x360], r14
mov qword [rsp + 0x368], rsi
movdqu xmm0, xmmword [0x0044a5f8]
lea rax, [rsp + 0x370]
movdqu xmmword [rax], xmm0
lea rax, [0x0045c02d]
mov qword [rsp + 0x380], rax
mov qword [rsp + 0x388], 1
lea rcx, [rsp + 0x360]
call fcn.00403376
mov qword [rsp + 0x228], rax
mov qword [rsp + 0x230], rdx
lea rcx, [rsp + 0x278]
lea rdx, [rsp + 0xf0]
lea r8, [rsp + 0x228]
call fcn.00403303
movzx ebx, word [rsp + 0x288]
test bx, bx
jne 0x4046bb
mov rdi, qword [rsp + 0x278]
mov rbx, qword [rsp + 0x280]
mov r12, qword [rsp + 0x158]
xor r13d, r13d
cmp r13, 0x50
je 0x403f01
lea rax, [0x0044a3e8]
mov r15, qword [r13 + rax]
mov rcx, r15
call sub.KERNEL32.dll_GetModuleHandleA
test rax, rax
jne 0x403ec0
mov rcx, r15
call sub.KERNEL32.dll_LoadLibraryA
mov rcx, rax
mov rdx, rdi
call sub.KERNEL32.dll_GetProcAddress
lea rcx, [0x00454b40]
test rax, rax
je 0x403eea
mov byte [rsp + 0x160], 1
mov r12, rax
lea rcx, [rsp + 0x158]
add r13, 8
cmp byte [rcx + 8], 0
je 0x403e99
mov qword [rsp + 0x158], r12
mov r12b, 1
jmp 0x403f43
mov qword [rsp + 0x158], r12
xor ecx, ecx
call sub.KERNEL32.dll_GetModuleHandleA
mov rcx, rax
mov rdx, rdi
call sub.KERNEL32.dll_GetProcAddress
lea rcx, [0x00454b40]
test rax, rax
je 0x403f3f
mov qword [rsp + 0x238], rax
mov byte [rsp + 0x240], 1
lea rcx, [rsp + 0x238]
mov r12b, byte [rcx + 8]
mov r15, qword [rcx]
inc rbx
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0x20], rax
xor r13d, r13d
lea rcx, [rsp + 0x1d8]
mov rdx, rdi
mov r8, rbx
xor r9d, r9d
call qword [0x0045c2a0]
mov cl, 1
test r12b, r12b
je 0x404602
mov rdx, qword [rsp + 0x190]
test cl, cl
jne 0x403f94
dec ebp
movzx eax, bp
shl rax, 4
mov rax, qword [rdx + rax]
mov rbp, qword [rsp + 0x138]
mov rcx, rbp
shl rcx, 4
mov rsi, qword [rsp + 0xd8]
add rsi, qword [rdx + rcx]
test r13b, r13b
je 0x403fed
mov ecx, dword [rsp + 0x30]
cmp ecx, 1
je 0x40401d
cmp ecx, 3
lea rdi, [rsp + 0x118]
mov r15, qword [rsp + 0x78]
je 0x40402a
cmp ecx, 4
jne 0x404541
sub eax, esi
mov rcx, qword [rsp + 0x70]
add ecx, dword [rsi]
add eax, ecx
add eax, 0xfffffffc
mov dword [rsi], eax
jmp 0x404541
mov r12, qword [rsp + 0x90]
mov r13d, dword [rsp + 0x98]
test r13d, r13d
je 0x40408a
mov rcx, r15
call fcn.00408cfc
test r12, r12
je 0x404036
mov ecx, dword [r12 - 8]
lea edx, [rcx - 1]
jmp 0x40403d
add rax, qword [rsp + 0x70]
add qword [rsi], rax
jmp 0x404534
sub eax, esi
add eax, 0xfffffffc
mov dword [rsi], eax
jmp 0x404541
xor ecx, ecx
mov edx, 0xffffffff
mov r8, rax
shr r8, 0x39
and eax, edx
mov r9b, byte [r12 + rax]
sub ecx, 1
setb r10b
test r9b, r9b
je 0x40407d
test r10b, r10b
jne 0x40407d
test r9b, r9b
jns 0x404078
and r9b, 0x7f
cmp r8b, r9b
jne 0x404078
mov r9, qword [r12 - 0x10]
cmp qword [r9 + rax*8], r15
je 0x404188
inc rax
jmp 0x404044
cmp r13d, 0x100
jae 0x404558
cmp dword [rsp + 0x9c], 0
je 0x4040af
mov rcx, r15
call fcn.00408cfc
test r12, r12
je 0x4040e9
mov edx, dword [r12 - 8]
lea r8d, [rdx - 1]
mov r9, rdx
jmp 0x4040f4
test r12, r12
je 0x4041ba
mov eax, dword [r12 - 8]
imul rcx, rax, 0x50
mov rax, rcx
xor edx, edx
mov r8d, 0x64
div r8
neg rdx
lea rax, [rcx + rdx]
add rax, 0x64
xor edx, edx
mov ecx, 0x50
div rcx
jmp 0x4041bf
xor edx, edx
mov r8d, 0xffffffff
xor r9d, r9d
mov rcx, rax
shr rax, 0x39
and ecx, r8d
mov r10b, byte [r12 + rcx]
sub edx, 1
setb r11b
test r10b, r10b
je 0x404148
test r11b, r11b
jne 0x404148
test r10b, r10b
jns 0x404131
mov r11d, r10d
and r11b, 0x7f
cmp al, r11b
jne 0x404131
mov r10, qword [r12 - 0x10]
cmp qword [r10 + rcx*8], r15
jne 0x404143
jmp 0x404196
mov r11d, dword [r12 - 8]
cmp r9, r11
jne 0x404143
cmp r10b, 1
cmove r9, rcx
inc rcx
jmp 0x4040fb
mov edx, dword [r12 - 8]
cmp r9, rdx
cmovb rcx, r9
dec dword [rsp + 0x9c]
or al, 0x80
mov byte [r12 + rcx], al
lea rax, [rcx*8]
add rax, qword [r12 - 0x10]
shl rcx, 2
add rcx, qword [r12 - 0x18]
inc dword [rsp + 0x98]
mov byte [rsp + 0x450], 0
jmp 0x4041ab
mov rcx, qword [r12 - 0x18]
mov r13d, dword [rcx + rax*4]
jmp 0x4044fd
lea rax, [r10 + rcx*8]
shl rcx, 2
add rcx, qword [r12 - 0x18]
mov byte [rsp + 0x450], 1
mov rdx, qword [rsp + 0xd0]
mov dl, byte [rdx]
jmp 0x4044f2
mov eax, 1
test eax, eax
je 0x4041cb
bsr ecx, eax
xor ecx, 0x1f
jmp 0x4041d0
mov ecx, 0x20
add ecx, 0x20
neg ecx
mov edi, 1
shl rdi, cl
cmp edi, 9
mov eax, 8
cmovb edi, eax
movaps xmmword [rsp + 0x40], xmm6
lea rbx, [rdi + 0x1f]
and rbx, 0xfffffffffffffff8
lea r14d, [rdi*8]
add r14, rbx
lea eax, [rdi*4]
lea r8, [rax + r14]
add r8, 7
movabs rax, 0x7fffffff8
and r8, rax
lea rax, [rsp + 0xa0]
movdqu xmm0, xmmword [rax]
movdqa xmmword [rsp + 0x100], xmm0
mov rcx, qword [rsp + 0xd0]
lea rdx, [rsp + 0x100]
call fcn.004097bb
movzx eax, word [rsp + 0x460]
mov word [rsp + 0x28], ax
test ax, ax
jne 0x40441b
mov qword [rsp + 0xd8], rsi
mov rax, qword [rsp + 0x450]
lea rsi, [rax + 0x18]
add r14, rax
mov qword [rax], r14
add rbx, rax
mov qword [rax + 8], rbx
mov dword [rax + 0x10], edi
mov qword [rsp + 0x40], rsi
mov r8d, dword [rax + 0x10]
mov rcx, rsi
xor edx, edx
call fcn.00443720
imul rax, rdi, 0x50
xor edx, edx
mov ecx, 0x64
div rcx
mov r14, rax
mov dword [rsp + 0x4c], r14d
test r13d, r13d
je 0x4043d1
test r12, r12
je 0x4042be
mov eax, dword [r12 - 8]
jmp 0x4042c0
xor eax, eax
mov rcx, qword [r12 - 0x18]
mov qword [rsp + 0x70], rcx
mov rcx, qword [r12 - 0x10]
mov qword [rsp + 0xc8], rcx
xor ebp, ebp
xor ebx, ebx
mov dword [rsp + 0x30], r13d
mov qword [rsp + 0xc0], rax
cmp rbp, rax
je 0x4043c0
cmp byte [r12 + rbp], 0
jns 0x4043b5
mov rax, qword [rsp + 0xc8]
mov rdi, qword [rax + rbp*8]
mov rax, qword [rsp + 0x70]
mov r13d, dword [rax + rbp*4]
test ebx, ebx
je 0x404366
mov rcx, rdi
call fcn.00408cfc
mov ecx, dword [rsi - 8]
lea edx, [rcx - 1]
mov r8, rax
shr r8, 0x39
and eax, edx
mov r9b, byte [rsi + rax]
sub ecx, 1
setb r10b
test r9b, r9b
je 0x404366
test r10b, r10b
jne 0x404366
test r9b, r9b
jns 0x404359
and r9b, 0x7f
cmp r8b, r9b
jne 0x404359
mov r9, qword [rsi - 0x10]
cmp qword [r9 + rax*8], rdi
je 0x40435e
inc rax
jmp 0x40432a
mov byte [rsp + 0x458], 1
mov rcx, rdi
call fcn.00408cfc
mov edx, dword [rsi - 8]
dec edx
mov r8, rax
mov ecx, r8d
and ecx, edx
lea r8, [rcx + 1]
cmp byte [rsi + rcx], 0
js 0x404376
dec r14d
shr rax, 0x39
or al, 0x80
mov byte [rsi + rcx], al
mov rax, qword [rsi - 0x10]
mov qword [rax + rcx*8], rdi
mov rax, qword [rsi - 0x18]
mov dword [rax + rcx*4], r13d
inc ebx
mov r13d, dword [rsp + 0x30]
cmp ebx, r13d
je 0x4043bd
mov rax, qword [rsp + 0xc0]
inc rbp
jmp 0x4042e8
mov ebx, r13d
mov dword [rsp + 0x48], ebx
mov dword [rsp + 0x4c], r14d
mov rbp, qword [rsp + 0x138]
and dword [rsp + 0x98], 0
movdqa xmm0, xmmword [rsp + 0x90]
mov rax, qword [rsp + 0x40]
mov qword [rsp + 0x90], rax
mov eax, dword [rsp + 0x48]
mov dword [rsp + 0x98], eax
mov eax, dword [rsp + 0x4c]
mov dword [rsp + 0x9c], eax
movdqa xmmword [rsp + 0x40], xmm0
mov r12, qword [rsp + 0x90]
mov rsi, qword [rsp + 0xd8]
lea rcx, [rsp + 0x40]
lea rdx, [rsp + 0xa0]
call fcn.004070f7
cmp word [rsp + 0x28], 0
je 0x404094
cmp dword [rsp + 0x98], 0
lea rax, [0x00454b40]
je 0x4044c5
mov rcx, r15
call fcn.00408cfc
test r12, r12
je 0x404461
mov ecx, dword [r12 - 8]
lea edx, [rcx - 1]
jmp 0x404468
xor ecx, ecx
mov edx, 0xffffffff
mov r8, rax
shr r8, 0x39
and eax, edx
mov r9b, byte [r12 + rax]
sub ecx, 1
setb r10b
test r9b, r9b
je 0x4044a4
test r10b, r10b
jne 0x4044a4
test r9b, r9b
jns 0x40449f
and r9b, 0x7f
cmp r8b, r9b
jne 0x40449f
mov r9, qword [r12 - 0x10]
cmp qword [r9 + rax*8], r15
je 0x4044ad
inc rax
jmp 0x40446f
lea rax, [0x00454b40]
jmp 0x4044c5
mov qword [rsp + 0x80], rax
mov byte [rsp + 0x88], 1
lea rax, [rsp + 0x80]
cmp byte [rax + 8], 0
je 0x4046b7
mov rcx, qword [rax]
lea rax, [rcx*8]
add rax, qword [r12 - 0x10]
shl rcx, 2
add rcx, qword [r12 - 0x18]
mov byte [rsp + 0xe0], 1
mov dl, 1
test dl, 1
jne 0x4044fa
mov qword [rax], r15
mov dword [rcx], r13d
mov eax, r13d
shl rax, 4
add rax, qword [rsp + 0x148]
cmp byte [rsp + 0x2c], 0
je 0x404518
mov qword [rax], r15
jmp 0x40452d
mov word [rax], 0xb848
mov qword [rax + 2], r15
and word [rax + 0xe], 0
mov dword [rax + 0xa], 0xe0ff
sub eax, esi
add eax, 0xfffffffc
mov dword [rsi], eax
lea rdi, [rsp + 0x118]
mov r15, qword [rsp + 0x78]
inc r15
jmp 0x4039df
inc rbp
jmp 0x403936
mov ebx, eax
jmp 0x4046bb
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + 0x30]
lea rsi, [rsp + 0x450]
mov qword [rsi], rax
and qword [rsi + 8], 0
lea rcx, [0x0045c7c0]
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov qword [rsp + 0x40], rsi
lea rcx, [rsp + 0x100]
lea rax, [rsp + 0x40]
mov qword [rcx], rax
lea rax, [0x00408c48]
mov qword [rcx + 8], rax
lea rdx, str.error:_Too_many_external_functions_used._Consider_increasing__max_num_external_functions__constant._n
mov r8d, 0x64
call fcn.00408bf8
test ax, ax
jne 0x4046ab
lea rcx, [rsp + 0x450]
call fcn.00408bb5
jmp 0x4046ab
inc rdi
mov rax, qword [rsp + 0xb8]
mov qword [rsp + 0x20], rax
lea rcx, [rsp + 0x1d8]
mov rdx, r15
mov r8, rdi
xor r9d, r9d
call qword [0x0045c2a0]
jmp 0x4046b7
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + 0x30]
lea rdi, [rsp + 0x450]
mov qword [rdi], rax
and qword [rdi + 8], 0
lea rcx, [0x0045c7c0]
call sub.KERNEL32.dll_AcquireSRWLockExclusive
lea rax, [rsp + 0xe0]
mov qword [rax], rdi
mov qword [rsp + 0x80], rax
lea rax, [0x00408c48]
mov qword [rsp + 0x88], rax
mov rax, qword [rsp + 0x80]
mov rdx, qword [rsp + 0x88]
lea rcx, [rsp + 0x40]
mov qword [rcx], rax
mov qword [rcx + 8], rdx
lea rdx, str.error:_SYMBOL_NAME:_s_NOT_FOUND__n
mov r8d, 0x14
call fcn.00408bf8
test ax, ax
jne 0x4046ab
lea r8, [0x0044a6b0]
lea r9, [rsp + 0x80]
mov rcx, r14
mov rdx, rsi
call fcn.00409161
test ax, ax
je 0x4048bc
lea rcx, [0x0045c7c0]
call fcn.00447540
mov bx, 5
lea rdx, [rsp + 0xa0]
lea rcx, [rsp + 0x90]
call fcn.004070f7
mov rax, qword [rsp + 0x1b0]
mov qword [rsp + 0x470], rax
movups xmm0, xmmword [rsp + 0x1a0]
movaps xmmword [rsp + 0x460], xmm0
movups xmm0, xmmword [rsp + 0x190]
movaps xmmword [rsp + 0x450], xmm0
mov rax, qword [rsp + 0x468]
mov rdx, qword [rsp + 0x470]
lea rcx, [rsp + 0x40]
mov qword [rcx], rax
mov qword [rcx + 8], rdx
mov rdx, qword [rsp + 0x190]
mov r8, qword [rsp + 0x1a0]
call fcn.00407157
lea rcx, [rsp + 0x1d8]
call fcn.00403035
test bx, bx
je 0x4047aa
lea rcx, [rsp + 0x3e0]
mov rax, qword [rsp + 0x58]
mov qword [rcx], rax
mov rax, qword [rsp + 0x60]
mov qword [rcx + 8], rax
mov rdx, qword [rsp + 0x50]
mov r8, qword [rsp + 0x130]
call fcn.00403533
mov rsi, qword [rsp + 0x68]
mov rcx, rsi
call fcn.00403501
mov ebp, 0xffffffff
mov byte [rsi + 0x18], 0
mov eax, ebp
movaps xmm6, xmmword [rsp + 0x1480]
movaps xmm7, xmmword [rsp + 0x1490]
add rsp, 0x14a8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
lea rcx, [rsp + 0x3f0]
mov rax, qword [rsp + 0x58]
mov qword [rcx], rax
mov rax, qword [rsp + 0x60]
mov qword [rcx + 8], rax
mov rdx, qword [rsp + 0x50]
mov r8, qword [rsp + 0x130]
call fcn.00403533
mov rax, qword [rsp + 0x170]
mov ecx, dword [rsp + 0xec]
mov dword [rax], ecx
xor ebp, ebp
jmp 0x404784
imul r14, qword [rsp + 0x168], 0x12
xor r15d, r15d
lea rsi, [rsp + 0x100]
lea rdi, [rsp + 0xe0]
lea rbx, [rsp + 0x1c0]
xor r13d, r13d
cmp r14, r13
je 0x404910
mov rdx, qword [rsp + 0x140]
mov rax, qword [rdx + r13]
mov r12d, dword [rdx + r13 + 8]
movzx ecx, word [rdx + r13 + 0x10]
mov byte [rsp + 0x3c], r15b
mov ebp, dword [rdx + r13 + 0xc]
mov dword [rsp + 0x100], r12d
mov dword [rsp + 0x104], ebp
mov qword [rsp + 0x108], rax
mov word [rsp + 0x110], cx
mov byte [rsp + 0x114], r15b
mov rcx, rsi
call fcn.004030d2
test rax, rax
jne 0x404889
mov rcx, rdi
mov rdx, rsi
call fcn.0040313f
mov edx, dword [rsp + 0xe0]
mov rcx, rbx
call fcn.00403191
cmp rdx, 2
je 0x4048a8
cmp rdx, 3
jne 0x4048b3
cmp byte [rax], 0x5f
jne 0x4048b3
cmp byte [rax + 1], 0x67
jne 0x4048b3
cmp byte [rax + 2], 0x6f
jne 0x4048b3
jmp 0x4048e1
cmp byte [rax], 0x67
jne 0x4048b3
cmp byte [rax + 1], 0x6f
je 0x4048e1
add r13, 0x12
jmp 0x404811
movups xmm0, xmmword [rsp + 0x80]
lea rcx, [rsp + 0x100]
movaps xmmword [rcx], xmm0
lea rdx, [0x0045c342]
mov r8d, 0xc
jmp 0x4045b6
movd xmm0, ebp
movd eax, xmm0
dec eax
mov rcx, qword [rsp + 0x190]
movzx eax, ax
shl rax, 4
add r12, qword [rcx + rax]
je 0x404910
mov rax, qword [rsp + 0x68]
mov qword [rax + 0x10], r12
xor ebx, ebx
jmp 0x4046bb
mov rax, qword gs:[0x30]
mov rax, qword [rax + 0x60]
mov rax, qword [rax + 0x20]
mov rax, qword [rax + 0x30]
lea rsi, [rsp + 0x450]
mov qword [rsi], rax
and qword [rsi + 8], 0
lea rcx, [0x0045c7c0]
call sub.KERNEL32.dll_AcquireSRWLockExclusive
lea rax, [rsp + 0x80]
mov qword [rax], rsi
lea rcx, [rsp + 0x40]
mov qword [rcx], rax
lea rax, [0x00408c48]
mov qword [rcx + 8], rax
lea rdx, str.error:_go___NOT_FOUND._n
mov r8d, 0x17
jmp 0x4045b6