Function at 0x46a9f0
Capabilities:
Encode data using xor
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0x338
mov eax, dword [0x4902d4]
xor eax, esp
mov dword [esp + 0x334], eax
push esi
push edi
lea eax, [esp + 0x130]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
je 0x46aa6f
cmp eax, 0x104
ja 0x46aa6f
xorps xmm0, xmm0
mov dword [esp + 0xf0], 0
lea ecx, [esp + 0x130]
movaps xmmword [esp + 0xe0], xmm0
mov dword [esp + 0xf4], 0
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x46aa55
sub ecx, edx
lea eax, [esp + 0x130]
sar ecx, 1
push ecx
push eax
jmp 0x46aa97
xorps xmm0, xmm0
mov dword [esp + 0xf0], 0
push 0
movaps xmmword [esp + 0xe4], xmm0
mov dword [esp + 0xf8], 0
push 0x485b38
lea ecx, [esp + 0xe8]
call fcn.0046f230
cmp dword [esp + 0xf0], 0
mov edi, 5
mov esi, dword [0x4931b8]
lea ecx, [edi + 0x1a]
je 0x46adb4
mov eax, dword [0x485f44]
movq xmm0, qword [str.zV_PXMW_3__E]
mov dword [esp + 0x98], eax
mov ax, word [0x485f48]
movq qword [esp + 0x90], xmm0
mov word [esp + 0x9c], ax
test ah, ah
je 0x46ac47
xor edx, edx
mov dword [esp + 8], edx
cmp esi, 2
jl 0x46ac10
movaps xmm2, xmmword [0x4860d0]
mov edx, 8
movaps xmm3, xmmword [0x486540]
movaps xmm1, xmm2
punpckldq xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm1, xmm3
pmuldq xmm0, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
movd xmm4, edi
psrad xmm1, xmm4
movd xmm5, ecx
movaps xmm0, xmm1
mov dword [esp + 8], edx
psrld xmm0, xmm5
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x486110]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
movaps xmm2, xmmword [0x4860e0]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x4861d0]
movd xmm0, dword [str.zV_PXMW_3__E]
packuswb xmm1, xmm1
paddb xmm1, xmmword [0x486200]
pxor xmm1, xmm0
movaps xmm0, xmm2
movd dword [esp + 0x90], xmm1
movaps xmm1, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm1, xmm3
pmuldq xmm0, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm4
movaps xmm0, xmm1
psrld xmm0, xmm5
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x486110]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x4861d0]
movd xmm0, dword [esp + 0x94]
packuswb xmm1, xmm1
paddb xmm1, xmmword [0x486200]
pxor xmm1, xmm0
movd dword [esp + 0x94], xmm1
mov eax, 0x8fb823ef
imul edx
add edx, dword [esp + 8]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 8]
movsx eax, al
mov cl, dl
imul eax, eax, 0x39
sub cl, al
add cl, 0x38
xor byte [esp + edx + 0x90], cl
inc edx
mov dword [esp + 8], edx
cmp edx, 0xe
jl 0x46ac10
xorps xmm0, xmm0
mov dword [esp + 0xc0], 0
lea ecx, [esp + 0x90]
movaps xmmword [esp + 0xb0], xmm0
mov dword [esp + 0xc4], 0
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x46ac72
sub ecx, edx
lea eax, [esp + 0x90]
push ecx
push eax
lea ecx, [esp + 0xb8]
call fcn.00437fe0
cmp dword [esp + 0xc4], 0x10
lea edi, [esp + 0xb0]
lea eax, [esp + 0xb0]
mov dword [esp + 0x90], 0
cmovae edi, dword [esp + 0xb0]
add edi, dword [esp + 0xc0]
cmp dword [esp + 0xc4], 0x10
mov dword [esp + 0x94], 0
cmovae eax, dword [esp + 0xb0]
mov dword [esp + 0xc], eax
mov dword [esp + 0x98], 0
sub edi, eax
je 0x46ad1a
push edi
lea ecx, [esp + 0x94]
call fcn.0044cfc0
mov esi, dword [esp + 0x90]
push edi
push dword [esp + 0x10]
push esi
call sub.VCRUNTIME140.dll_memmove
lea eax, [esi + edi]
add esp, 0xc
mov dword [esp + 0x94], eax
lea edx, [esp + 0x90]
lea ecx, [esp + 0xe0]
call fcn.00468540
mov ecx, dword [esp + 0x90]
test ecx, ecx
je 0x46ad6b
mov edx, dword [esp + 0x98]
mov eax, ecx
sub edx, ecx
cmp edx, 0x1000
jb 0x46ad61
mov ecx, dword [eax - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x46ad61
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.0047421c
add esp, 8
mov ecx, dword [esp + 0xc4]
cmp ecx, 0x10
jb 0x46ada9
mov edx, dword [esp + 0xb0]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x46ad9f
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x46ad9f
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.0047421c
add esp, 8
mov esi, dword [0x4931b8]
mov edi, 5
push 0x468190
call fcn.00404a60
add esp, 4
call fcn.00404910
test eax, eax
je 0x46bee4
push 3
push 0x22002
call fcn.00401ca0
push 0
push 0x22003
call fcn.00401ca0
mov eax, dword [0x485eec]
xor edx, edx
movups xmm0, xmmword [str.zV_PXMW_3__e_n____9L]
mov dword [esp + 0xd0], eax
add esp, 0x10
mov al, byte [0x485ef0]
mov byte [esp + 0xc4], al
mov dword [esp + 8], edx
movups xmmword [esp + 0xb0], xmm0
cmp esi, 2
jl 0x46af65
movaps xmm0, xmmword [0x486200]
mov eax, 0x1f
movaps xmm4, xmmword [0x4860d0]
movaps xmm3, xmmword [0x486540]
movaps xmm6, xmmword [0x486110]
movaps xmmword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x10]
movd xmm5, edi
movd xmm7, eax
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x4861d0]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [esp + edx + 0xb0]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [esp + edx + 0xb0], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x4861d0]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [esp + edx + 0xb4]
pxor xmm1, xmm0
movd dword [esp + edx + 0xb4], xmm1
add edx, 8
cmp edx, 0x10
jl 0x46ae51
mov dword [esp + 8], edx
cmp edx, 0x15
jge 0x46af9c
mov eax, 0x8fb823ef
imul edx
add edx, dword [esp + 8]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 8]
movsx eax, al
mov cl, dl
imul eax, eax, 0x39
sub cl, al
add cl, 0x38
xor byte [esp + edx + 0xb0], cl
inc edx
mov dword [esp + 8], edx
cmp edx, 0x15
jl 0x46af65
push 0
push 0
lea eax, [esp + 0xb8]
push eax
push 0xc8
push 0x190
call fcn.00402290
mov edi, eax
add esp, 0x14
mov dword [esp + 0x4c], edi
test edi, edi
je 0x46bee4
push 0xffffffffffffffff
push 0xffffffffffffffff
push 0xc8
push 0x1a4
push edi
call fcn.00402060
add esp, 0x14
push edi
call fcn.00404f60
add esp, 4
push 1
call fcn.00405000
mov esi, dword [0x4931e0]
add esp, 4
test esi, esi
je 0x46b002
inc dword [esi + 0xb4]
push 0x5c18
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_malloc]
add esp, 4
test eax, eax
je 0x46b01f
push 0
mov ecx, eax
call fcn.00408e50
jmp 0x46b021
xor eax, eax
mov dword [0x4931e0], eax
call fcn.0040c070
mov eax, dword [0x4931e0]
lea ecx, [esp + 0xa8]
test esi, esi
xorps xmm0, xmm0
cmovne eax, esi
mov dword [0x4931e0], eax
or dword [eax + 8], 1
movlpd qword [esp + 0xa8], xmm0
call fcn.00468940
mov esi, dword [0x4931e0]
lea eax, [esp + 0xc]
push eax
lea ecx, [esp + 0xac]
mov dword [esp + 0x10], 0
mov dword [esi + 0x37b0], 0
mov dword [esi + 0x37e4], 0
mov dword [esi + 0x3820], 0
mov dword [esi + 0x3818], 0
mov dword [esi + 0x37e8], 0x3f800000
mov dword [esi + 0x3814], 0x40800000
call fcn.0046d190
lea ecx, [esp + 0xa8]
movups xmm0, xmmword [eax]
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 1
push eax
movaps xmmword [esp + 0x54], xmm0
call fcn.0046d190
lea ecx, [esp + 0xa8]
movups xmm0, xmmword [eax]
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 2
push eax
movaps xmmword [esp + 0x94], xmm0
call fcn.0046d190
lea ecx, [esp + 0xa8]
movups xmm0, xmmword [eax]
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 3
push eax
movaps xmmword [esp + 0x14], xmm0
call fcn.0046d190
lea ecx, [esp + 0xa8]
movups xmm0, xmmword [eax]
lea eax, [esp + 0xc]
mov dword [esp + 0xc], 4
push eax
movaps xmmword [esp + 0x74], xmm0
call fcn.0046d190
movaps xmm0, xmmword [esp + 0x90]
movaps xmm7, xmmword [esp + 0x70]
movaps xmm1, xmmword [esp + 0x10]
movups xmm2, xmmword [eax]
mov dword [esp + 0x9c], 0x3eb851ec
movups xmmword [esi + 0x389c], xmm0
movaps xmm0, xmmword [esp + 0x50]
movaps xmm6, xmm2
movups xmmword [esi + 0x38cc], xmm0
xorps xmm0, xmm0
shufps xmm6, xmm2, 0x55
movaps xmm5, xmm2
movss dword [esp + 0x90], xmm2
shufps xmm5, xmm2, 0xaa
movss dword [esp + 0x94], xmm6
movss dword [esp + 0x98], xmm5
movups xmmword [esi + 0x38dc], xmm0
movups xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x9c], 0x3eb851ec
movss dword [esp + 0x90], xmm2
movups xmmword [esi + 0x38fc], xmm0
movss dword [esp + 0x94], xmm6
movss dword [esp + 0x98], xmm5
movups xmm0, xmmword [esp + 0x90]
movaps xmmword [esp + 0x20], xmm2
movups xmmword [esi + 0x387c], xmm1
movups xmmword [esi + 0x388c], xmm1
movups xmmword [esi + 0x38ac], xmm7
movups xmmword [esi + 0x38bc], xmm7
movups xmmword [esi + 0x38ec], xmm7
movups xmmword [esi + 0x390c], xmm0
movaps xmm0, xmmword [0x4863b0]
movaps xmm4, xmm7
movups xmmword [esi + 0x394c], xmm0
movaps xmm0, xmmword [0x4862b0]
movaps xmm3, xmm7
movups xmmword [esi + 0x395c], xmm0
movaps xmm0, xmmword [0x4863f0]
movups xmmword [esi + 0x396c], xmm0
movaps xmm0, xmmword [0x486430]
movups xmmword [esi + 0x397c], xmm0
movaps xmm0, xmmword [0x486470]
movups xmmword [esi + 0x398c], xmm0
movss dword [esp + 0x90], xmm7
shufps xmm3, xmm7, 0xaa
movss dword [esp + 0x98], xmm3
movss dword [esp + 0x9c], xmm3
shufps xmm4, xmm7, 0x55
movss dword [esp + 0x94], xmm4
movups xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x9c], 0x3eb851ec
movss dword [esp + 0x90], xmm2
movups xmmword [esi + 0x39cc], xmm0
movss dword [esp + 0x94], xmm6
movss dword [esp + 0x98], xmm5
movups xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x9c], 0x3eb851ec
movss dword [esp + 0x90], xmm2
movups xmmword [esi + 0x39dc], xmm0
movss dword [esp + 0x94], xmm6
movss dword [esp + 0x98], xmm5
movups xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x9c], 0x3f800000
movss dword [esp + 0x90], xmm7
movups xmmword [esi + 0x39ec], xmm0
movss dword [esp + 0x94], xmm4
movss dword [esp + 0x98], xmm3
movups xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x9c], 0x3eb851ec
movss dword [esp + 0x90], xmm2
movups xmmword [esi + 0x39fc], xmm0
movss dword [esp + 0x94], xmm6
movss dword [esp + 0x98], xmm5
movups xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x9c], 0x3eb851ec
movss dword [esp + 0x90], xmm2
movaps xmm2, xmm1
movups xmmword [esi + 0x3a0c], xmm0
movss dword [esp + 0x94], xmm6
movss dword [esp + 0x98], xmm5
movups xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x9c], 0x3f451eb8
movss dword [esp + 0x90], xmm1
shufps xmm2, xmm1, 0x55
movups xmmword [esi + 0x399c], xmm1
movups xmmword [esi + 0x39ac], xmm1
movups xmmword [esi + 0x39bc], xmm1
shufps xmm1, xmmword [esp + 0x10], 0xaa
movups xmmword [esi + 0x3a1c], xmm0
movss dword [esp + 0x94], xmm2
movss dword [esp + 0x98], xmm1
movups xmm0, xmmword [esp + 0x90]
mov dword [esp + 0x9c], 0x3f451eb8
movss dword [esp + 0x94], xmm2
movups xmmword [esi + 0x3a2c], xmm0
movaps xmm0, xmmword [esp + 0x10]
movups xmmword [esi + 0x3a3c], xmm0
movups xmmword [esi + 0x3a4c], xmm0
movss dword [esp + 0x90], xmm0
movss dword [esp + 0x98], xmm1
movups xmm0, xmmword [esp + 0x90]
movups xmmword [esi + 0x391c], xmm7
movups xmmword [esi + 0x3a5c], xmm0
movaps xmm0, xmmword [esp + 0x10]
movups xmmword [esi + 0x392c], xmm7
movups xmmword [esi + 0x393c], xmm7
movups xmmword [esi + 0x3a6c], xmm0
movups xmmword [esi + 0x3a7c], xmm0
movss dword [esp + 0x10], xmm7
movss dword [esp + 0x14], xmm4
movss dword [esp + 0x18], xmm3
movaps xmm1, xmmword [esp + 0x20]
mov dword [esp + 0x1c], 0x3f800000
movups xmm0, xmmword [esp + 0x10]
mov dword [esp + 0x1c], 0x3eb851ec
movss dword [esp + 0x10], xmm1
movups xmmword [esi + 0x3a8c], xmm0
push ecx
movss dword [esp + 0x18], xmm6
mov ecx, edi
movss dword [esp + 0x1c], xmm5
movups xmm0, xmmword [esp + 0x14]
mov dword [esp + 0x20], 0x3eb851ec
movss dword [esp + 0x14], xmm1
movups xmmword [esi + 0x3a9c], xmm0
movss dword [esp + 0x18], xmm6
movss dword [esp + 0x1c], xmm5
movups xmm0, xmmword [esp + 0x14]
movups xmmword [esi + 0x3aac], xmm0
movaps xmm0, xmmword [0x486350]
movups xmmword [esi + 0x3abc], xmm0
movaps xmm0, xmmword [0x486440]
movups xmmword [esi + 0x3acc], xmm0
movaps xmm0, xmmword [0x486480]
movups xmmword [esi + 0x3adc], xmm0
movaps xmm0, xmmword [0x486420]
movups xmmword [esi + 0x3aec], xmm0
movaps xmm0, xmmword [0x486380]
movups xmmword [esi + 0x3afc], xmm0
movaps xmm0, xmmword [0x486370]
movups xmmword [esi + 0x3b0c], xmm0
movaps xmm0, xmmword [0x4863d0]
movups xmmword [esi + 0x3b1c], xmm0
movaps xmm0, xmmword [0x486410]
movups xmmword [esi + 0x3b2c], xmm0
movaps xmm0, xmmword [0x4863e0]
movups xmmword [esi + 0x3b3c], xmm0
xorps xmm0, xmm0
movups xmmword [esi + 0x3b4c], xmm0
movaps xmm0, xmmword [0x486220]
movups xmmword [esi + 0x3b5c], xmm0
movaps xmm0, xmmword [0x486270]
movups xmmword [esi + 0x3b6c], xmm0
movaps xmm0, xmmword [0x486310]
movups xmmword [esi + 0x3b7c], xmm0
movaps xmm0, xmmword [0x4864d0]
movups xmmword [esi + 0x3b8c], xmm0
movaps xmm0, xmmword [0x4862e0]
movups xmmword [esi + 0x3b9c], xmm0
movaps xmm0, xmmword [0x486230]
movups xmmword [esi + 0x3bac], xmm0
movaps xmm0, xmmword [0x486260]
movups xmmword [esi + 0x3bbc], xmm0
call fcn.00430160
mov eax, dword [0x485f88]
xor edx, edx
movq xmm0, qword [str.eO_IOTQQ_pqsD]
add esp, 4
mov esi, dword [0x4931b8]
mov dword [esp + 0x98], eax
mov al, byte [0x485f8c]
movq qword [esp + 0x90], xmm0
mov byte [esp + 0x9c], al
mov dword [esp + 8], edx
cmp esi, 2
jl 0x46b730
movaps xmm2, xmmword [0x4860d0]
mov eax, 5
movaps xmm4, xmmword [0x486540]
movaps xmm1, xmm2
punpckldq xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
mov edx, 8
pmuldq xmm0, xmm4
pmuldq xmm1, xmm4
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
movd xmm5, eax
psrad xmm1, xmm5
mov eax, 0x1f
mov dword [esp + 8], edx
movaps xmm0, xmm1
movd xmm6, eax
mov eax, dword [0x486200]
psrld xmm0, xmm6
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x486110]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
movaps xmm2, xmmword [0x4860e0]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x4861d0]
packuswb xmm1, xmm1
movd xmm0, eax
paddb xmm1, xmm0
movd xmm0, dword [str.eO_IOTQQ_pqsD]
pxor xmm1, xmm0
movaps xmm0, xmm2
movd dword [esp + 0x90], xmm1
movaps xmm1, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm4
pmuldq xmm1, xmm4
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm6
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x486110]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x4861d0]
packuswb xmm1, xmm1
movd xmm0, eax
paddb xmm1, xmm0
movd xmm0, dword [esp + 0x94]
pxor xmm1, xmm0
movd dword [esp + 0x94], xmm1
nop dword [eax]
mov eax, 0x8fb823ef
imul edx
add edx, dword [esp + 8]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 8]
movsx eax, al
mov cl, dl
imul eax, eax, 0x39
sub cl, al
add cl, 0x38
xor byte [esp + edx + 0x90], cl
inc edx
mov dword [esp + 8], edx
cmp edx, 0xd
jl 0x46b730
lea ecx, [esp + 0x90]
call fcn.00430cc0
xorps xmm0, xmm0
mov byte [esp + 0xa5], 0
movaps xmmword [esp + 0x110], xmm0
movaps xmmword [esp + 0x100], xmm0
movq qword [esp + 0x120], xmm0
movups xmmword [esp + 0x104], xmm0
push edi
mov byte [esp + 0xaa], 1
mov byte [esp + 0xab], 0
mov dword [esp + 0x118], 0
mov dword [esp + 0x11c], 0xf
mov byte [esp + 0x108], 0
mov dword [esp + 0x120], 0
mov dword [esp + 0x124], 0
mov dword [esp + 0x128], 0
mov dword [esp + 0xd8], 0
mov dword [esp + 0xdc], 0
mov dword [esp + 0xe0], 0
call fcn.00401fe0
add esp, 4
test eax, eax
jne 0x46bba4
call fcn.00402270
mov eax, dword [0x4931e0]
test eax, eax
je 0x46b833
mov eax, dword [eax + 0x7c]
jmp 0x46b835
xor eax, eax
cmp dword [eax + 0x28], 0
jne 0x46b840
call fcn.004318c0
call fcn.00430a70
call fcn.0040e3b0
lea eax, [esp + 0x8c]
push eax
lea eax, [esp + 0x8c]
push eax
push edi
call fcn.00402010
mov ecx, dword [0x4931e0]
xor edx, edx
add esp, 0xc
mov dword [esp + 8], edx
mov eax, dword [ecx + 0x46f0]
or eax, 1
mov dword [ecx + 0x4700], 0
mov dword [ecx + 0x46f0], eax
or eax, 2
mov dword [ecx + 0x4704], 0
mov dword [ecx + 0x4708], 0
mov dword [ecx + 0x470c], 0
mov dword [ecx + 0x46f4], 1
movd xmm0, dword [esp + 0x88]
movd xmm1, dword [esp + 0x8c]
mov dword [ecx + 0x46f0], eax
mov eax, dword [0x485eec]
mov dword [esp + 0x30], eax
mov al, byte [0x485ef0]
mov dword [ecx + 0x46f8], 1
mov byte [esp + 0x34], al
cvtdq2ps xmm0, xmm0
cvtdq2ps xmm1, xmm1
movss dword [ecx + 0x4710], xmm0
movss dword [ecx + 0x4714], xmm1
movups xmm0, xmmword [str.zV_PXMW_3__e_n____9L]
movups xmmword [esp + 0x20], xmm0
cmp esi, 2
jl 0x46ba60
movaps xmm0, xmmword [0x486200]
mov eax, 5
movaps xmm4, xmmword [0x4860d0]
movaps xmm3, xmmword [0x486540]
movaps xmm6, xmmword [0x486110]
movd xmm5, eax
mov eax, 0x1f
movaps xmmword [esp + 0x10], xmm0
mov ecx, dword [esp + 0x10]
movd xmm7, eax
nop dword [eax]
movd xmm0, edx
lea eax, [edx + 4]
pshufd xmm2, xmm0, 0
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
punpckldq xmm1, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x4861d0]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [esp + edx + 0x20]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [esp + edx + 0x20], xmm1
paddd xmm2, xmm4
movaps xmm1, xmm2
movaps xmm0, xmm2
punpckldq xmm1, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm3
pmuldq xmm1, xmm3
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
psrad xmm1, xmm5
movaps xmm0, xmm1
psrld xmm0, xmm7
paddd xmm0, xmm1
pmulld xmm0, xmm6
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x4861d0]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [esp + edx + 0x24]
pxor xmm1, xmm0
movd dword [esp + edx + 0x24], xmm1
add edx, 8
cmp edx, 0x10
jl 0x46b950
mov dword [esp + 8], edx
cmp edx, 0x15
jge 0x46ba94
nop dword [eax + eax]
mov eax, 0x8fb823ef
imul edx
add edx, dword [esp + 8]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [esp + 8]
movsx eax, al
mov cl, dl
imul eax, eax, 0x39
sub cl, al
add cl, 0x38
xor byte [esp + edx + 0x20], cl
inc edx
mov dword [esp + 8], edx
cmp edx, 0x15
jl 0x46ba60
push 0x27
xor edx, edx
lea ecx, [esp + 0x24]
call fcn.00413280
lea eax, [esp + 0x8c]
add esp, 4
mov dword [esp + 0x90], eax
lea ecx, [esp + 0x50]
lea eax, [esp + 0xd4]
mov dword [esp + 0x94], eax
lea eax, [esp + 0x100]
mov dword [esp + 0x98], eax
lea eax, [esp + 0xa5]
mov dword [esp + 0x50], eax
lea eax, [esp + 0x90]
mov dword [esp + 0x54], eax
lea eax, [esp + 0xa6]
mov dword [esp + 0x58], eax
lea eax, [esp + 0x100]
mov dword [esp + 0x5c], eax
lea eax, [esp + 0xa7]
mov dword [esp + 0x60], eax
lea eax, [esp + 0xd4]
mov dword [esp + 0x64], eax
call fcn.0046cb40
call fcn.00415cc0
call fcn.00410460
push dword [esp + 0x8c]
push dword [esp + 0x8c]
push 0
push 0
call dword [sym.imp.OPENGL32.dll_glViewport]
sub esp, 0x10
mov dword [esp + 0xc], 0x3f800000
mov dword [esp + 8], 0x3e68e8e9
mov dword [esp + 4], 0
mov dword [esp], 0x3dd0d0d1
call dword [sym.imp.OPENGL32.dll_glClearColor]
push 0x4000
call dword [sym.imp.OPENGL32.dll_glClear]
mov eax, dword [0x4931e0]
xor ecx, ecx
mov eax, dword [eax + 0x47bc]
mov eax, dword [eax]
add eax, 0x38
cmp byte [eax], cl
cmovne ecx, eax
call fcn.004311e0
push edi
call fcn.00404fb0
add esp, 4
push edi
call fcn.00401fe0
add esp, 4
test eax, eax
je 0x46b820
mov esi, dword [0x4931e0]
mov dword [esp + 8], esi
test esi, esi
je 0x46bbbb
mov eax, dword [esi + 0x7c]
mov dword [esp + 0xc], eax
jmp 0x46bbc3
mov dword [esp + 0xc], 0
lea eax, [esi + 8]
mov dword [esp + 0x48], eax
test esi, esi
je 0x46bbd3
mov eax, dword [esi + 0x7c]
jmp 0x46bbd5
xor eax, eax
cmp dword [eax + 0x40], 0
lea ecx, [eax + 0x40]
mov dword [esp + 0x88], eax
mov dword [esp + 0x8c], ecx
je 0x46bc13
push ecx
push 1
call dword [0x493228]
mov eax, dword [esp + 0x8c]
mov esi, dword [0x4931e0]
mov dword [esp + 8], esi
mov dword [eax], 0
mov eax, dword [esp + 0x88]
cmp dword [eax + 0x44], 0
lea ecx, [eax + 0x44]
mov dword [esp + 0x8c], ecx
je 0x46bc4a
push ecx
push 1
call dword [0x493228]
mov eax, dword [esp + 0x8c]
mov esi, dword [0x4931e0]
mov dword [esp + 8], esi
mov dword [eax], 0
mov eax, dword [esp + 0x88]
mov eax, dword [eax + 0x28]
test eax, eax
je 0x46bc70
push eax
call dword [0x49322c]
mov eax, dword [esp + 0x88]
mov esi, dword [0x4931e0]
mov dword [esp + 8], esi
mov dword [eax + 0x28], 0
test esi, esi
je 0x46bc79
mov eax, dword [esi + 0x7c]
jmp 0x46bc7b
xor eax, eax
mov dword [esp + 0x8c], eax
add eax, 0x24
cmp dword [eax], 0
je 0x46bcb5
push eax
push 1
call dword [0x493234]
mov eax, dword [esi + 0x48]
mov esi, dword [0x4931e0]
mov dword [esp + 8], esi
mov dword [eax + 4], 0
mov eax, dword [esp + 0x8c]
mov dword [eax + 0x24], 0
mov eax, dword [esp + 0x48]
mov dword [eax + 0x6c], 0
mov dword [eax + 0x74], 0
mov eax, dword [esp + 0xc]
test eax, eax
je 0x46bced
test esi, esi
je 0x46bcd9
dec dword [esi + 0xb4]
push eax
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov esi, dword [0x4931e0]
add esp, 4
mov dword [esp + 8], esi
test esi, esi
je 0x46bcf6
mov eax, dword [esi + 0x78]
jmp 0x46bcf8
xor eax, eax
cmp byte [eax + 0x40], 0
mov dword [esp + 0x8c], eax
je 0x46bdce
mov eax, dword [eax]
mov dword [esp + 0x88], eax
test esi, esi
je 0x46bd1b
mov edi, dword [esi + 0x78]
jmp 0x46bd1d
xor edi, edi
push dword [edi + 0x44]
push eax
call fcn.00402230
push dword [edi + 0x4c]
push dword [esp + 0x94]
call fcn.004016f0
push dword [edi + 0x48]
push dword [esp + 0x9c]
call fcn.004016b0
push dword [edi + 0x50]
push dword [esp + 0xa4]
call fcn.00401670
push dword [edi + 0x54]
push dword [esp + 0xac]
call fcn.00401730
push dword [edi + 0x58]
push dword [esp + 0xb4]
call fcn.004015f0
push dword [edi + 0x5c]
push dword [esp + 0xbc]
call fcn.00401630
push dword [edi + 0x60]
call fcn.004027b0
mov eax, dword [esp + 0xc8]
add esp, 0x3c
mov byte [edi + 0x40], 0
mov dword [edi + 0x44], 0
mov dword [edi + 0x4c], 0
mov dword [edi + 0x48], 0
mov dword [edi + 0x50], 0
mov dword [edi + 0x54], 0
mov dword [edi + 0x58], 0
mov dword [edi + 0x5c], 0
mov dword [edi + 0x60], 0
lea edi, [eax + 0x14]
mov esi, 9
push dword [edi]
call fcn.00401930
add esp, 4
lea edi, [edi + 4]
sub esi, 1
jne 0x46bdd6
mov esi, dword [esp + 8]
mov eax, dword [0x4931e0]
mov edi, dword [esp + 0x4c]
mov dword [esi + 0x70], 0
mov dword [esi + 0x78], 0
test eax, eax
je 0x46be0d
dec dword [eax + 0xb4]
push dword [esp + 0x8c]
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
mov esi, dword [0x4931e0]
add esp, 4
mov dword [0x4931e0], esi
call fcn.0040c480
mov dword [0x4931e0], 0
test esi, esi
je 0x46be5c
mov ecx, esi
call fcn.004200f0
mov eax, dword [0x4931e0]
test eax, eax
je 0x46be52
dec dword [eax + 0xb4]
push esi
call dword [sym.imp.api_ms_win_crt_heap_l1_1_0.dll_free]
add esp, 4
push edi
call fcn.00401f50
add esp, 4
call fcn.00404980
lea ecx, [esp + 0xd4]
xor esi, esi
call fcn.004466e0
lea ecx, [esp + 0x11c]
call fcn.004466e0
mov ecx, dword [esp + 0x118]
cmp ecx, 0x10
jb 0x46bebc
mov edx, dword [esp + 0x104]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x46beb2
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46bf1d
push ecx
push edx
call fcn.0047421c
add esp, 8
lea ecx, [esp + 0xa8]
mov dword [esp + 0x114], esi
mov dword [esp + 0x118], 0xf
mov byte [esp + 0x104], 0
call fcn.0046d2f0
jmp 0x46bee9
mov esi, 1
mov ecx, dword [esp + 0xf4]
cmp ecx, 8
jb 0x46bf2d
mov edx, dword [esp + 0xe0]
lea ecx, [ecx*2 + 2]
mov eax, edx
cmp ecx, 0x1000
jb 0x46bf23
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x46bf23
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push ecx
push edx
call fcn.0047421c
add esp, 8
mov ecx, dword [esp + 0x33c]
mov eax, esi
pop edi
pop esi
xor ecx, esp
call fcn.00473fd7
mov esp, ebp
pop ebp
ret 0x10