Function at 0x405070
Capabilities:
Authenticate hmac
Create process on windows
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46b5fa
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x148
mov eax, dword [0x4803a4]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x88], 0
mov dword [ebp - 4], 0
lea ecx, [ebp - 0x48]
push 0
mov byte [ebp - 0x50], 0
call fcn.00409080
mov dword [ebp - 4], 1
xor edx, edx
cmp dword [0x480bdc], 2
movups xmm0, xmmword [0x47c234]
mov al, byte [0x47c254]
mov byte [ebp - 0xec], al
lea ecx, [edx + 5]
movups xmmword [ebp - 0x10c], xmm0
mov dword [ebp - 0x84], edx
lea esi, [edx + 0x1f]
movups xmm0, xmmword [0x47c244]
movups xmmword [ebp - 0xfc], xmm0
jl 0x405270
movaps xmm0, xmmword [str.6666666666666666]
movaps xmm4, xmmword [0x47c3d0]
movaps xmm3, xmmword [0x47c470]
movaps xmm6, xmmword [0x47c3f0]
movd xmm5, ecx
movaps xmmword [ebp - 0xd0], xmm0
mov ecx, dword [ebp - 0xd0]
movd xmm7, esi
nop word [eax + 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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x10c]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + edx - 0x10c], 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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x108]
pxor xmm1, xmm0
movd dword [ebp + edx - 0x108], xmm1
add edx, 8
cmp edx, 0x20
jl 0x405150
mov dword [ebp - 0x84], edx
cmp edx, 0x21
jge 0x4052ad
nop word [eax + eax]
mov eax, 0xa0a0a0a1
imul edx
add edx, dword [ebp - 0x84]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x84]
movsx eax, al
mov cl, dl
imul eax, eax, 0x33
sub cl, al
add cl, 0x36
xor byte [ebp + edx - 0x10c], cl
inc edx
mov dword [ebp - 0x84], edx
cmp edx, 0x21
jl 0x405270
push 0
mov dword [ebp - 0xa4], 0
lea ecx, [ebp - 0xa4]
push 0x47b168
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0xf
mov byte [ebp - 0xa4], 0
call fcn.00401be0
lea eax, [ebp - 0x10c]
mov byte [ebp - 4], 2
push eax
lea edx, [ebp - 0xa4]
lea ecx, [ebp - 0xe8]
call fcn.00409850
mov edi, eax
sub esp, 0x14
mov byte [ebp - 4], 3
mov esi, esp
mov dword [ebp - 0x8c], esp
mov dword [ebp - 0x88], esi
mov edx, dword [edi + 0x14]
mov eax, edx
mov ecx, dword [edi + 0x10]
sub eax, ecx
cmp eax, 3
jb 0x405354
lea eax, [ecx + 3]
mov dword [edi + 0x10], eax
mov eax, edi
cmp edx, 0x10
jb 0x405335
mov eax, dword [edi]
push 3
lea esi, [eax + ecx]
push 0x47b2b8
push esi
call sub.VCRUNTIME140.dll_memmove
mov byte [esi + 3], 0
add esp, 0xc
mov esi, dword [ebp - 0x88]
jmp 0x405373
push 3
push 0x47b2b8
mov byte [ebp - 0x88], 0
mov ecx, edi
push dword [ebp - 0x88]
push 3
call fcn.00409e80
mov edi, eax
mov dword [esi], 0
mov dword [esi + 0x10], 0
mov dword [esi + 0x14], 0
movups xmm0, xmmword [edi]
movups xmmword [esi], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [esi + 0x10], xmm0
mov dword [edi + 0x10], 0
mov dword [edi + 0x14], 0xf
mov byte [edi], 0
mov byte [ebp - 4], 4
xor edx, edx
movups xmm0, xmmword [str.CLII]
mov al, byte [0x47c230]
mov esi, dword [0x480bdc]
mov byte [ebp - 0xec], al
mov dword [ebp - 0x84], edx
movups xmmword [ebp - 0x11c], xmm0
movups xmm0, xmmword [0x47c210]
movups xmmword [ebp - 0x10c], xmm0
movups xmm0, xmmword [0x47c220]
movups xmmword [ebp - 0xfc], xmm0
cmp esi, 2
jl 0x405550
movaps xmm0, xmmword [str.6666666666666666]
mov eax, 5
movaps xmm4, xmmword [0x47c3d0]
movaps xmm3, xmmword [0x47c470]
movaps xmm6, xmmword [0x47c3f0]
movd xmm5, eax
mov eax, 0x1f
movaps xmmword [ebp - 0xd0], xmm0
mov ecx, dword [ebp - 0xd0]
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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x11c]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ebp + edx - 0x11c], 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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, ecx
paddb xmm1, xmm0
movd xmm0, dword [ebp + edx - 0x118]
pxor xmm1, xmm0
movd dword [ebp + edx - 0x118], xmm1
add edx, 8
cmp edx, 0x30
jl 0x405433
mov dword [ebp - 0x84], edx
cmp edx, 0x31
jge 0x40558d
nop dword [eax]
mov eax, 0xa0a0a0a1
imul edx
add edx, dword [ebp - 0x84]
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [ebp - 0x84]
movsx eax, al
mov cl, dl
imul eax, eax, 0x33
sub cl, al
add cl, 0x36
xor byte [ebp + edx - 0x11c], cl
inc edx
mov dword [ebp - 0x84], edx
cmp edx, 0x31
jl 0x405550
sub esp, 0x18
lea ecx, [ebp - 0x11c]
mov edx, esp
lea edi, [ecx + 1]
mov dword [edx], 0
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0xf
nop
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4055b0
sub ecx, edi
lea eax, [ebp - 0x11c]
push ecx
push eax
mov ecx, edx
call fcn.00401be0
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 3
call fcn.004039f0
add esp, 0x30
mov byte [ebp - 4], 6
mov edx, dword [ebp - 0xd4]
cmp edx, 0x10
jb 0x405611
mov ecx, dword [ebp - 0xe8]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405607
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40565c
push edx
push ecx
call fcn.00469eed
add esp, 8
mov dword [ebp - 0xd8], 0
mov dword [ebp - 0xd4], 0xf
mov byte [ebp - 0xe8], 0
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x90]
cmp edx, 0x10
jb 0x40566c
mov ecx, dword [ebp - 0xa4]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405662
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x405662
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.00469eed
add esp, 8
push 0
push 1
sub esp, 0x28
mov dword [ebp - 0x94], 0
mov eax, esp
mov dword [ebp - 0x90], 0xf
lea edx, [ebp - 0x40]
mov byte [ebp - 0xa4], 0
lea ecx, [ebp - 0x28]
mov dword [eax + 0x24], 0
call fcn.00409900
add esp, 0x30
push str.success
lea ecx, [ebp - 0x28]
mov byte [ebp - 4], 8
call fcn.00409a20
xor edx, edx
cmp byte [eax], 4
lea ecx, [eax + 8]
cmovne ecx, edx
cmp byte [ecx], dl
jne 0x406164
push str.errno
lea ecx, [ebp - 0x28]
call fcn.00409a20
mov edx, 0x2329
mov ecx, eax
call fcn.00409b10
test al, al
je 0x4058a2
lea eax, [ebp - 0x9c]
push eax
call fcn.00406230
mov edi, eax
cmp byte [edi + 0xf], 0
je 0x4061df
xor ecx, ecx
mov dword [ebp - 0x84], ecx
cmp esi, 2
jl 0x405870
movaps xmm0, xmmword [str.6666666666666666]
mov eax, 5
movaps xmm4, xmmword [0x47c3d0]
mov esi, 4
movaps xmm3, xmmword [0x47c470]
xor edx, edx
movaps xmm6, xmmword [0x47c3f0]
mov ecx, edi
movd xmm5, eax
sub esi, edi
mov eax, 0x1f
movaps xmmword [ebp - 0xd0], xmm0
movd xmm7, eax
mov eax, dword [ebp - 0xd0]
nop dword [eax]
movd xmm0, edx
add edx, 8
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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, eax
lea eax, [esi + ecx]
lea ecx, [ecx + 8]
paddb xmm1, xmm0
movd xmm0, dword [ecx - 8]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ecx - 8], xmm1
paddd xmm2, xmm4
mov eax, dword [ebp - 0xd0]
movaps xmm1, xmm2
punpckldq xmm1, xmm2
movaps xmm0, 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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, eax
paddb xmm1, xmm0
movd xmm0, dword [ecx - 4]
pxor xmm1, xmm0
movd dword [ecx - 4], xmm1
cmp edx, 0x10
jl 0x405760
jmp 0x4061df
mov eax, 0xa0a0a0a1
lea esi, [ecx + edi]
mul ecx
shr edx, 5
movsx eax, dl
imul eax, eax, 0x33
sub cl, al
add cl, 0x36
xor byte [esi], cl
mov ecx, dword [ebp - 0x84]
inc ecx
mov dword [ebp - 0x84], ecx
cmp ecx, 0x10
jge 0x4061df
jmp 0x405870
push str.errno
lea ecx, [ebp - 0x28]
call fcn.00409a20
mov edx, 0x2328
mov ecx, eax
call fcn.00409b10
test al, al
je 0x406164
lea ecx, [ebp - 0x134]
call fcn.00403690
mov edi, eax
lea ecx, [ebp - 0xe8]
mov byte [ebp - 4], 9
call fcn.004038a0
mov ecx, eax
mov byte [ebp - 4], 0xa
mov esi, dword [ecx + 0x14]
mov eax, esi
mov edx, dword [ecx + 0x10]
sub eax, edx
cmp eax, 1
jb 0x40590b
lea eax, [edx + 1]
mov dword [ecx + 0x10], eax
mov eax, ecx
cmp esi, 0x10
jb 0x405903
mov eax, dword [ecx]
mov word [eax + edx], 0x5c
jmp 0x405928
push 1
push 0x47b2d4
mov byte [ebp - 0x88], 0
push dword [ebp - 0x88]
push 1
call fcn.00409e80
mov ecx, eax
movups xmm0, xmmword [ecx]
movups xmmword [ebp - 0xd0], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [ebp - 0xc0], xmm0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
mov byte [ecx], 0
push edi
lea eax, [ebp - 0xd0]
mov byte [ebp - 4], 0xb
push eax
push dword [ebp - 0x8c]
lea ecx, [ebp - 0xa4]
call fcn.0040b2f0
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x90]
mov eax, edx
mov ecx, dword [ebp - 0x94]
sub eax, ecx
cmp eax, 4
jb 0x4059b3
lea eax, [ecx + 4]
cmp edx, 0x10
mov dword [ebp - 0x94], eax
lea eax, [ebp - 0xa4]
cmovae eax, dword [ebp - 0xa4]
mov dword [eax + ecx], 0x6578652e
mov byte [eax + ecx + 4], 0
lea eax, [ebp - 0xa4]
jmp 0x4059d4
push 4
push str..exe
mov byte [ebp - 0x88], 0
lea ecx, [ebp - 0xa4]
push dword [ebp - 0x88]
push 4
call fcn.00409e80
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x68], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x58], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 0xf
mov byte [eax], 0
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0x90]
cmp edx, 0x10
jb 0x405a34
mov ecx, dword [ebp - 0xa4]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405a2a
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405b12
push edx
push ecx
call fcn.00469eed
add esp, 8
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 0xf
mov byte [ebp - 0xa4], 0
mov byte [ebp - 4], 0xf
mov edx, dword [ebp - 0xbc]
cmp edx, 0x10
jb 0x405a8d
mov ecx, dword [ebp - 0xd0]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405a83
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405b12
push edx
push ecx
call fcn.00469eed
add esp, 8
mov byte [ebp - 4], 0x10
mov edx, dword [ebp - 0xd4]
cmp edx, 0x10
jb 0x405ac7
mov ecx, dword [ebp - 0xe8]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405abd
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405b12
push edx
push ecx
call fcn.00469eed
add esp, 8
mov dword [ebp - 0xd8], 0
mov dword [ebp - 0xd4], 0xf
mov byte [ebp - 0xe8], 0
mov byte [ebp - 4], 0x11
mov edx, dword [ebp - 0x120]
cmp edx, 0x10
jb 0x405b22
mov ecx, dword [ebp - 0x134]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405b18
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x405b18
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.00469eed
add esp, 8
push str.message
lea ecx, [ebp - 0x28]
mov dword [ebp - 0x124], 0
mov dword [ebp - 0x120], 0xf
mov byte [ebp - 0x134], 0
call fcn.00409a20
push str.link
mov ecx, eax
call fcn.00409a20
sub esp, 0x18
mov esi, eax
lea eax, [ebp - 0x68]
mov dword [ebp - 0x8c], esp
mov ecx, esp
push eax
call fcn.00408960
sub esp, 0x18
mov ecx, esp
mov dword [ebp - 0x84], ecx
mov byte [ebp - 4], 0x13
mov dword [ecx], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
mov byte [ecx], 0
cmp byte [esi], 3
mov dword [ebp - 0x88], 0x2f
jne 0x405ba6
mov eax, dword [esi + 8]
jmp 0x405ba8
xor eax, eax
cmp ecx, eax
je 0x405bbe
cmp dword [eax + 0x14], 0x10
mov edx, dword [eax + 0x10]
jb 0x405bb7
mov eax, dword [eax]
push edx
push eax
call fcn.00401be0
mov dword [ebp - 4], 0x12
mov byte [ebp - 4], 0x11
call fcn.004045a0
add esp, 0x30
cmp eax, 1
je 0x405dae
mov edx, eax
lea ecx, [ebp - 0x80]
call fcn.004027c0
mov dword [ebp - 0x88], eax
lea eax, [ebp - 0x158]
mov byte [ebp - 4], 0x14
push eax
call fcn.00406250
mov edi, eax
cmp byte [edi + 0x19], 0
je 0x4061ef
xor ecx, ecx
cmp dword [0x480bdc], 2
mov dword [ebp - 0x84], ecx
jl 0x405d73
movaps xmm0, xmmword [str.6666666666666666]
mov eax, 5
movaps xmm4, xmmword [0x47c3d0]
mov esi, 4
movaps xmm3, xmmword [0x47c470]
mov edx, edi
movaps xmm6, xmmword [0x47c3f0]
sub esi, edi
movd xmm5, eax
mov eax, 0x1f
movaps xmmword [ebp - 0xd0], xmm0
movd xmm7, eax
mov eax, dword [ebp - 0xd0]
nop
movd xmm0, ecx
add ecx, 8
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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, eax
lea eax, [esi + edx]
lea edx, [edx + 8]
paddb xmm1, xmm0
movd xmm0, dword [edx - 8]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [edx - 8], xmm1
paddd xmm2, xmm4
mov eax, dword [ebp - 0xd0]
movaps xmm1, xmm2
punpckldq xmm1, xmm2
movaps xmm0, 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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, eax
paddb xmm1, xmm0
movd xmm0, dword [edx - 4]
pxor xmm1, xmm0
movd dword [edx - 4], xmm1
cmp ecx, 0x18
jl 0x405c60
mov dword [ebp - 0x84], ecx
cmp ecx, 0x1a
jge 0x4061ef
mov eax, 0xa0a0a0a1
lea esi, [ecx + edi]
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add eax, edx
movsx eax, al
imul eax, eax, 0x33
sub cl, al
add cl, 0x36
xor byte [esi], cl
mov ecx, dword [ebp - 0x84]
inc ecx
mov dword [ebp - 0x84], ecx
cmp ecx, 0x1a
jge 0x4061ef
jmp 0x405d73
lea eax, [ebp - 0x10c]
push eax
call fcn.00406280
mov edi, eax
cmp byte [edi + 0x1f], 0
je 0x405f5c
xor ecx, ecx
cmp dword [0x480bdc], 2
mov dword [ebp - 0x84], ecx
jl 0x405f30
movaps xmm0, xmmword [str.6666666666666666]
mov eax, 5
movaps xmm4, xmmword [0x47c3d0]
mov edx, 4
movaps xmm3, xmmword [0x47c470]
xor esi, esi
movaps xmm6, xmmword [0x47c3f0]
mov ecx, edi
movd xmm5, eax
sub edx, edi
mov eax, 0x1f
movaps xmmword [ebp - 0xd0], xmm0
movd xmm7, eax
mov eax, dword [ebp - 0xd0]
movd xmm0, esi
add esi, 8
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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, eax
lea eax, [edx + ecx]
lea ecx, [ecx + 8]
paddb xmm1, xmm0
movd xmm0, dword [ecx - 8]
pxor xmm1, xmm0
movd xmm0, eax
pshufd xmm2, xmm0, 0
movd dword [ecx - 8], xmm1
paddd xmm2, xmm4
mov eax, dword [ebp - 0xd0]
movaps xmm1, xmm2
punpckldq xmm1, xmm2
movaps xmm0, 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 [0x47c450]
packuswb xmm1, xmm1
movd xmm0, eax
paddb xmm1, xmm0
movd xmm0, dword [ecx - 4]
pxor xmm1, xmm0
movd dword [ecx - 4], xmm1
cmp esi, 0x20
jl 0x405e21
jmp 0x405f5c
mov eax, 0xa0a0a0a1
lea esi, [edi + ecx]
mul ecx
shr edx, 5
movsx eax, dl
imul eax, eax, 0x33
sub cl, al
add cl, 0x36
xor byte [esi], cl
mov ecx, dword [ebp - 0x84]
inc ecx
mov dword [ebp - 0x84], ecx
cmp ecx, 0x20
jl 0x405f30
mov esi, dword [0x480bdc]
lea eax, [ebp - 0x68]
push eax
mov edx, edi
lea ecx, [ebp - 0x158]
call fcn.00409620
push 0x47b27c
mov edx, eax
mov byte [ebp - 4], 0x15
lea ecx, [ebp - 0x80]
call fcn.00409850
add esp, 8
lea ecx, [ebp - 0x158]
mov byte [ebp - 4], 0x17
call fcn.00401b50
lea ecx, [ebp - 0x80]
call fcn.00401b40
mov dword [ebp - 0x8c], eax
lea eax, [ebp - 0xc0]
push eax
call fcn.004062c0
mov edx, eax
mov dword [ebp - 0x88], edx
cmp byte [edx + 7], 0
je 0x406112
xor ecx, ecx
mov dword [ebp - 0x84], ecx
cmp esi, 2
jl 0x4060e0
movaps xmm2, xmmword [0x47c3d0]
mov eax, 5
movaps xmm4, xmmword [0x47c470]
movaps xmm1, xmm2
punpckldq xmm1, xmm2
movaps xmm0, xmm2
punpckhdq xmm0, xmm2
pmuldq xmm0, xmm4
pmuldq xmm1, xmm4
shufps xmm1, xmm0, 0xdd
paddd xmm1, xmm2
movd xmm5, eax
psrad xmm1, xmm5
mov eax, 0x1f
movaps xmm0, xmm1
movd xmm6, eax
mov eax, dword [str.6666666666666666]
psrld xmm0, xmm6
paddd xmm0, xmm1
pmulld xmm0, xmmword [0x47c3f0]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
movaps xmm2, xmmword [0x47c3e0]
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x47c450]
packuswb xmm1, xmm1
movd xmm0, eax
paddb xmm1, xmm0
movd xmm0, dword [edx]
pxor xmm1, xmm0
movaps xmm0, xmm2
movd dword [edx], 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 [0x47c3f0]
psubd xmm2, xmm0
pshuflw xmm0, xmm2, 0xd8
pshufhw xmm0, xmm0, 0xd8
pshufd xmm1, xmm0, 0xd8
pand xmm1, xmmword [0x47c450]
packuswb xmm1, xmm1
movd xmm0, eax
paddb xmm1, xmm0
movd xmm0, dword [edx + 4]
pxor xmm1, xmm0
movd dword [edx + 4], xmm1
jmp 0x406112
lea esi, [edx + ecx]
mov eax, 0xa0a0a0a1
mul ecx
shr edx, 5
movsx eax, dl
mov edx, dword [ebp - 0x88]
imul eax, eax, 0x33
sub cl, al
add cl, 0x36
xor byte [esi], cl
mov ecx, dword [ebp - 0x84]
inc ecx
mov dword [ebp - 0x84], ecx
cmp ecx, 8
jl 0x4060e0
lea eax, [ebp - 0x13c]
push eax
call fcn.004062a0
mov edi, eax
cmp byte [edi + 4], 0
je 0x406209
xor ecx, ecx
mov dword [ebp - 0x84], ecx
mov eax, 0xa0a0a0a1
lea esi, [ecx + edi]
mul ecx
shr edx, 5
movsx eax, dl
imul eax, eax, 0x33
sub cl, al
add cl, 0x36
xor byte [esi], cl
mov ecx, dword [ebp - 0x84]
inc ecx
mov dword [ebp - 0x84], ecx
cmp ecx, 5
jge 0x406209
jmp 0x406132
lea ecx, [ebp - 0x28]
call fcn.00408850
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jb 0x4061a2
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x406198
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
jbe 0x406198
call dword [sym.imp.api_ms_win_crt_runtime_l1_1_0.dll__invalid_parameter_noinfo_noreturn]
push edx
push ecx
call fcn.00469eed
add esp, 8
lea ecx, [ebp - 0x50]
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
call fcn.00408850
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00469cb2
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
sub esp, 0x18
mov ecx, esp
push edi
call fcn.00401ba0
call fcn.004034f0
sub esp, 0x18
mov edx, edi
mov ecx, esp
push dword [ebp - 0x88]
call fcn.00409750
add esp, 4
call fcn.004034f0
push 0
push 0
push dword [ebp - 0x8c]
push dword [ebp - 0x88]
push edi
push 0
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
call fcn.00404b00
int3