Function at 0x46a830
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x68
mov eax, dword [0x542094]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push 0x20
mov esi, ecx
call dword [sym.imp.d3d9.dll_Direct3DCreate9]
mov edx, eax
mov dword [0x55220c], edx
test edx, edx
je 0x46aa65
push 0x552224
push 0x552238
push 0x40
xorps xmm0, xmm0
mov dword [0x55224c], 0
push esi
push 1
movlpd qword [0x552238], xmm0
movlpd qword [0x552244], xmm0
mov dword [0x552254], 0
movlpd qword [0x55225c], xmm0
movlpd qword [0x552264], xmm0
mov dword [0x552258], 1
mov dword [0x552250], 1
mov dword [0x552240], 0x15
mov dword [0x55226c], 0
mov eax, dword [edx]
push 0
push edx
call dword [eax + 0x40]
mov ebx, eax
test ebx, ebx
je 0x46b05d
cmp ebx, 0x8876086a
jg 0x46ad3f
je 0x46abde
cmp ebx, 0x8876017c
je 0x46aa77
cmp ebx, 0x88760868
jne 0x46ad4b
mov eax, dword fs:[0x2c]
mov word [ebp - 0x20], 0x5e0a
mov esi, dword [eax]
mov eax, dword [0x5d2840]
cmp eax, dword [esi + 4]
jle 0x46a969
push 0x5d2840
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d2840], 0xffffffff
jne 0x46a969
movaps xmm0, xmmword [0x53b8e0]
mov ax, word [ebp - 0x20]
push 0x4eddf0
movups xmmword [0x5d2984], xmm0
mov word [0x5d2994], ax
call fcn.004bfaea
add esp, 4
push 0x5d2840
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d2995], 0
je 0x46a99d
movups xmm0, xmmword [0x5d2984]
mov eax, 0x10
movaps xmm1, xmmword [0x53bb90]
xorps xmm1, xmm0
movups xmmword [0x5d2984], xmm1
nop
xor byte [eax + 0x5d2984], 0x5e
inc eax
cmp eax, 0x12
jb 0x46a990
mov eax, dword [0x5d3074]
mov word [ebp - 0x20], 0x5e70
cmp eax, dword [esi + 4]
jle 0x46aa06
push 0x5d3074
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d3074], 0xffffffff
jne 0x46aa06
movaps xmm0, xmmword [0x53bb40]
mov ax, word [ebp - 0x20]
movups xmmword [0x5d2b18], xmm0
push 0x4ede10
movaps xmm0, xmmword [0x53baa0]
movups xmmword [0x5d2b28], xmm0
mov word [0x5d2b38], ax
call fcn.004bfaea
add esp, 4
push 0x5d3074
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d2b39], 0
je 0x46aa4d
movaps xmm1, xmmword [0x53bb90]
xor eax, eax
nop dword [eax + eax]
movups xmm0, xmmword [eax + 0x5d2b18]
xorps xmm0, xmm1
movups xmmword [eax + 0x5d2b18], xmm0
add eax, 0x10
cmp eax, 0x20
jb 0x46aa20
cmp eax, 0x22
jae 0x46aa4d
nop
xor byte [eax + 0x5d2b18], 0x5e
inc eax
cmp eax, 0x22
jb 0x46aa40
push 0x30
push 0x5d2984
push 0x5d2b18
push dword [0x551e18]
call dword [sym.imp.USER32.dll_MessageBoxA]
xor al, al
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004bf82c
mov esp, ebp
pop ebp
ret
mov eax, dword fs:[0x2c]
mov dword [ebp - 0x28], 0x131b1311
mov dword [ebp - 0x24], 0x5e070c11
mov esi, dword [eax]
mov eax, dword [0x5d2790]
cmp eax, dword [esi + 4]
jle 0x46aae5
push 0x5d2790
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d2790], 0xffffffff
jne 0x46aae5
movaps xmm0, xmmword [0x53b8f0]
movups xmmword [0x5d2940], xmm0
push 0x4edd30
movq xmm0, qword [ebp - 0x28]
movq qword [0x5d2950], xmm0
call fcn.004bfaea
add esp, 4
push 0x5d2790
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d2957], 0
je 0x46ab1d
movups xmm0, xmmword [0x5d2940]
mov eax, 0x10
movaps xmm1, xmmword [0x53bb90]
xorps xmm1, xmm0
movups xmmword [0x5d2940], xmm1
nop dword [eax + eax]
xor byte [eax + 0x5d2940], 0x5e
inc eax
cmp eax, 0x18
jb 0x46ab10
mov eax, dword [0x5d27d8]
mov word [ebp - 0x20], 0x5e70
cmp eax, dword [esi + 4]
jle 0x46ab86
push 0x5d27d8
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d27d8], 0xffffffff
jne 0x46ab86
movaps xmm0, xmmword [0x53bb40]
mov ax, word [ebp - 0x20]
movups xmmword [0x5d2594], xmm0
push 0x4edd50
movaps xmm0, xmmword [0x53baa0]
movups xmmword [0x5d25a4], xmm0
mov word [0x5d25b4], ax
call fcn.004bfaea
add esp, 4
push 0x5d27d8
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d25b5], 0
je 0x46abcd
movaps xmm1, xmmword [0x53bb90]
xor eax, eax
nop dword [eax + eax]
movups xmm0, xmmword [eax + 0x5d2594]
xorps xmm0, xmm1
movups xmmword [eax + 0x5d2594], xmm0
add eax, 0x10
cmp eax, 0x20
jb 0x46aba0
cmp eax, 0x22
jae 0x46abcd
nop
xor byte [eax + 0x5d2594], 0x5e
inc eax
cmp eax, 0x22
jb 0x46abc0
push 0x30
push 0x5d2940
push 0x5d2594
jmp 0x46aa59
mov eax, dword fs:[0x2c]
mov dword [ebp - 0x24], 0x5e1b121c
mov esi, dword [eax]
mov eax, dword [0x5d3020]
cmp eax, dword [esi + 4]
jle 0x46ac40
push 0x5d3020
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d3020], 0xffffffff
jne 0x46ac40
movaps xmm0, xmmword [0x53b900]
mov eax, dword [ebp - 0x24]
push 0x4edd70
movups xmmword [0x5d30c0], xmm0
mov dword [0x5d30d0], eax
call fcn.004bfaea
add esp, 4
push 0x5d3020
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d30d3], 0
je 0x46ac7d
movups xmm0, xmmword [0x5d30c0]
mov eax, 0x10
movaps xmm1, xmmword [0x53bb90]
xorps xmm1, xmm0
movups xmmword [0x5d30c0], xmm1
nop word [eax + eax]
xor byte [eax + 0x5d30c0], 0x5e
inc eax
cmp eax, 0x14
jb 0x46ac70
mov eax, dword [0x5d246c]
mov word [ebp - 0x20], 0x5e70
cmp eax, dword [esi + 4]
jle 0x46ace6
push 0x5d246c
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d246c], 0xffffffff
jne 0x46ace6
movaps xmm0, xmmword [0x53bb40]
mov ax, word [ebp - 0x20]
movups xmmword [0x5d24ec], xmm0
push 0x4edd90
movaps xmm0, xmmword [0x53baa0]
movups xmmword [0x5d24fc], xmm0
mov word [0x5d250c], ax
call fcn.004bfaea
add esp, 4
push 0x5d246c
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d250d], 0
je 0x46ad2e
movaps xmm2, xmmword [0x53bb90]
xor eax, eax
nop dword [eax + eax]
movups xmm0, xmmword [eax + 0x5d24ec]
movaps xmm1, xmm2
xorps xmm1, xmm0
movups xmmword [eax + 0x5d24ec], xmm1
add eax, 0x10
cmp eax, 0x20
jb 0x46ad00
cmp eax, 0x22
jae 0x46ad2e
xor byte [eax + 0x5d24ec], 0x5e
inc eax
cmp eax, 0x22
jb 0x46ad21
push 0x30
push 0x5d30c0
push 0x5d24ec
jmp 0x46aa59
cmp ebx, 0x8876086c
je 0x46aefb
lea esi, [ebp - 7]
test ebx, ebx
jns 0x46ad80
neg ebx
mov eax, 0xcccccccd
dec esi
mul ebx
shr edx, 3
mov al, dl
shl al, 2
lea ecx, [eax + edx]
add cl, cl
sub bl, cl
add bl, 0x30
mov byte [esi], bl
mov ebx, edx
test ebx, ebx
jne 0x46ad54
dec esi
mov byte [esi], 0x2d
jmp 0x46ada2
mov eax, 0xcccccccd
dec esi
mul ebx
shr edx, 3
mov al, dl
shl al, 2
lea ecx, [eax + edx]
add cl, cl
sub bl, cl
add bl, 0x30
mov byte [esi], bl
mov ebx, edx
test ebx, ebx
jne 0x46ad80
lea eax, [ebp - 7]
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
xorps xmm0, xmm0
movups xmmword [ebp - 0x38], xmm0
cmp esi, eax
jne 0x46adcc
mov eax, 0xf
mov byte [ebp - 0x38], 0
mov dword [ebp - 0x24], eax
jmp 0x46adde
lea eax, [ebp - 7]
sub eax, esi
lea ecx, [ebp - 0x38]
push eax
push esi
call fcn.0044a810
mov eax, dword [ebp - 0x24]
cmp eax, 0x10
mov word [ebp - 0x44], 0x5e70
mov eax, dword fs:[0x2c]
lea esi, [ebp - 0x38]
cmovae esi, dword [ebp - 0x38]
mov ecx, dword [eax]
mov eax, dword [0x5d2b5c]
cmp eax, dword [ecx + 4]
jle 0x46ae59
push 0x5d2b5c
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d2b5c], 0xffffffff
jne 0x46ae59
movaps xmm0, xmmword [0x53bb40]
mov ax, word [ebp - 0x44]
movups xmmword [0x5d29f8], xmm0
push 0x4edd10
movaps xmm0, xmmword [0x53baa0]
movups xmmword [0x5d2a08], xmm0
mov word [0x5d2a18], ax
call fcn.004bfaea
add esp, 4
push 0x5d2b5c
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d2a19], 0
je 0x46ae9d
movaps xmm1, xmmword [0x53bb90]
xor eax, eax
nop dword [eax + eax]
movups xmm0, xmmword [eax + 0x5d29f8]
xorps xmm0, xmm1
movups xmmword [eax + 0x5d29f8], xmm0
add eax, 0x10
cmp eax, 0x20
jb 0x46ae70
cmp eax, 0x22
jae 0x46ae9d
nop
xor byte [eax + 0x5d29f8], 0x5e
inc eax
cmp eax, 0x22
jb 0x46ae90
push 0x30
push esi
push 0x5d29f8
push dword [0x551e18]
call dword [sym.imp.USER32.dll_MessageBoxA]
mov ecx, dword [ebp - 0x24]
cmp ecx, 0x10
jb 0x46aa65
mov edx, dword [ebp - 0x38]
inc ecx
mov eax, edx
cmp ecx, 0x1000
jb 0x46aedf
mov edx, dword [eax - 4]
add ecx, 0x23
sub eax, edx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x46b06f
push ecx
push edx
call fcn.004bf874
add esp, 8
xor al, al
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.004bf82c
mov esp, ebp
pop ebp
ret
mov eax, dword fs:[0x2c]
mov bl, 0x5e
mov word [ebp - 0x24], 0x1212
mov esi, dword [eax]
mov eax, dword [0x5d2a30]
cmp eax, dword [esi + 4]
jle 0x46af66
push 0x5d2a30
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d2a30], 0xffffffff
jne 0x46af66
movaps xmm0, xmmword [0x53b910]
mov ax, word [ebp - 0x24]
push 0x4eddb0
movups xmmword [0x5d2748], xmm0
mov word [0x5d2758], ax
mov byte [0x5d275a], bl
call fcn.004bfaea
add esp, 4
push 0x5d2a30
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d275a], 0
je 0x46af9c
movups xmm0, xmmword [0x5d2748]
mov eax, 0x10
movaps xmm1, xmmword [0x53bb90]
xorps xmm1, xmm0
movups xmmword [0x5d2748], xmm1
nop dword [eax]
xor byte [eax + 0x5d2748], bl
inc eax
cmp eax, 0x13
jb 0x46af90
mov eax, dword [0x5d29e8]
mov word [ebp - 0x44], 0x5e70
cmp eax, dword [esi + 4]
jle 0x46b005
push 0x5d29e8
call fcn.004bfb7b
add esp, 4
cmp dword [0x5d29e8], 0xffffffff
jne 0x46b005
movaps xmm0, xmmword [0x53bb40]
mov ax, word [ebp - 0x44]
movups xmmword [0x5d2b98], xmm0
push 0x4eddd0
movaps xmm0, xmmword [0x53baa0]
movups xmmword [0x5d2ba8], xmm0
mov word [0x5d2bb8], ax
call fcn.004bfaea
add esp, 4
push 0x5d29e8
call fcn.004bfb2a
add esp, 4
cmp byte [0x5d2bb9], 0
je 0x46b04c
movaps xmm1, xmmword [0x53bb90]
xor eax, eax
nop word [eax + eax]
movups xmm0, xmmword [eax + 0x5d2b98]
xorps xmm0, xmm1
movups xmmword [eax + 0x5d2b98], xmm0
add eax, 0x10
cmp eax, 0x20
jb 0x46b020
cmp eax, 0x22
jae 0x46b04c
nop
xor byte [eax + 0x5d2b98], bl
inc eax
cmp eax, 0x22
jb 0x46b040
push 0x30
push 0x5d2748
push 0x5d2b98
jmp 0x46aa59
mov ecx, dword [ebp - 4]
mov al, 1
pop esi
xor ecx, ebp
pop ebx
call fcn.004bf82c
mov esp, ebp
pop ebp
ret
call fcn.004c7a60
int3