Function at 0x407ce0
Capabilities:
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 0x59ee40
mov eax, dword fs:[0]
push eax
push ebx
sub esp, 0x288
mov eax, dword [0x62bcc0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
mov eax, dword [ebx + 8]
lea ecx, [ebp - 0x298]
mov dword [ebp - 0x254], eax
mov eax, dword [ebx + 0xc]
mov dword [ebp - 0x25c], eax
mov dword [ebp - 0x258], 0
call fcn.0042f800
mov dword [ebp - 4], 0
xor edi, edi
mov eax, dword [esi]
mov dword [ebp - 0x264], edi
test eax, eax
je 0x407d68
push eax
call fcn.00504903
add esp, 4
push 0
push 0
push 0
push dword [ebp - 0x254]
lea eax, [esi + 4]
mov dword [esi + 4], edi
lea ecx, [ebp - 0x298]
mov dword [ebp - 0x260], eax
mov dword [esi], edi
call fcn.0042f880
test eax, eax
je 0x407d9b
mov esi, 1
jmp 0x4081e0
mov eax, dword [ebp - 0x290]
mov dword [ebp - 0x254], eax
cmp dword [ebp - 0x25c], edi
je 0x407ff2
push 0x632380
lea eax, [ebp - 0x120]
push 0x104
push eax
call fcn.005048a9
lea edx, [ebp - 0x120]
add esp, 0xc
lea ecx, [edx + 1]
mov al, byte [edx]
inc edx
test al, al
jne 0x407dd5
sub edx, ecx
xor ecx, ecx
test edx, edx
jle 0x407f26
cmp edx, 0x10
jb 0x407f30
movaps xmm2, xmmword [0x618370]
mov eax, edx
and eax, 0x8000000f
jns 0x407e06
dec eax
or eax, 0xfffffff0
inc eax
movaps xmm0, xmmword [0x6183f0]
mov edi, edx
movaps xmm3, xmmword [0x6183b0]
sub edi, eax
movaps xmmword [ebp - 0x280], xmm0
mov eax, dword [ebp - 0x280]
nop word [eax + eax]
movd xmm0, ecx
pshufd xmm1, xmm0, 0
paddd xmm1, xmm2
movd xmm0, eax
andps xmm1, xmm3
lea eax, [ecx + 4]
packuswb xmm1, xmm1
packuswb xmm1, xmm1
paddb xmm1, xmm0
movd xmm0, dword [ebp + ecx - 0x120]
xorps xmm1, xmm0
movd xmm0, eax
movd dword [ebp + ecx - 0x120], xmm1
lea eax, [ecx + 8]
pshufd xmm1, xmm0, 0
movd xmm0, dword [ebp - 0x280]
paddd xmm1, xmm2
andps xmm1, xmm3
packuswb xmm1, xmm1
packuswb xmm1, xmm1
paddb xmm1, xmm0
movd xmm0, dword [ebp + ecx - 0x11c]
xorps xmm1, xmm0
movd xmm0, eax
movd dword [ebp + ecx - 0x11c], xmm1
lea eax, [ecx + 0xc]
pshufd xmm1, xmm0, 0
movd xmm0, dword [ebp - 0x280]
paddd xmm1, xmm2
andps xmm1, xmm3
packuswb xmm1, xmm1
packuswb xmm1, xmm1
paddb xmm1, xmm0
movd xmm0, dword [ebp + ecx - 0x118]
xorps xmm1, xmm0
movd xmm0, eax
mov eax, dword [ebp - 0x280]
movd dword [ebp + ecx - 0x118], xmm1
pshufd xmm1, xmm0, 0
paddd xmm1, xmm2
andps xmm1, xmm3
movd xmm0, eax
packuswb xmm1, xmm1
packuswb xmm1, xmm1
paddb xmm1, xmm0
movd xmm0, dword [ebp + ecx - 0x114]
xorps xmm1, xmm0
movd dword [ebp + ecx - 0x114], xmm1
add ecx, 0x10
cmp ecx, edi
jl 0x407e30
cmp ecx, edx
jge 0x407f40
nop word [eax + eax]
mov al, cl
add al, 0x64
xor byte [ebp + ecx - 0x120], al
inc ecx
cmp ecx, edx
jl 0x407f30
lea eax, [ebp - 0x120]
push eax
push dword [ebp - 0x25c]
call fcn.004306d0
mov edi, eax
add esp, 8
mov dword [ebp - 0x264], edi
test edi, edi
jne 0x407f87
mov eax, dword [esi]
test eax, eax
je 0x407f70
push eax
call fcn.00504903
add esp, 4
mov dword [esi + 4], 0
mov dword [esi], 0
mov esi, 2
jmp 0x4081e0
lea eax, [ebp - 0x250]
push eax
push 0
push edi
call fcn.00430490
add esp, 0xc
test eax, eax
je 0x407fe0
push edi
call fcn.004304f0
add esp, 4
push edi
test al, al
je 0x407fb2
call fcn.0042fa80
jmp 0x407fb7
call fcn.004355d0
mov eax, dword [esi]
add esp, 4
test eax, eax
je 0x407fc9
push eax
call fcn.00504903
add esp, 4
mov dword [esi + 4], 0
mov dword [esi], 0
mov esi, 3
jmp 0x4081e0
mov eax, dword [ebp - 0x128]
mov dword [ebp - 0x258], eax
mov eax, dword [ebp - 0x254]
mov ecx, dword [ebp - 0x258]
add ecx, 3
add eax, ecx
push eax
call fcn.0050491e
mov ecx, eax
add esp, 4
mov dword [esi], ecx
test ecx, ecx
jne 0x408055
test edi, edi
je 0x40802f
push edi
call fcn.004304f0
add esp, 4
push edi
test al, al
je 0x408027
call fcn.0042fa80
jmp 0x40802c
call fcn.004355d0
add esp, 4
mov eax, dword [esi]
test eax, eax
je 0x40803e
push eax
call fcn.00504903
add esp, 4
mov dword [esi + 4], 0
mov dword [esi], 0
mov esi, 4
jmp 0x4081e0
mov eax, dword [ebp - 0x254]
cdq
push edx
push eax
push ecx
lea ecx, [ebp - 0x298]
call fcn.0042fa00
test eax, eax
je 0x4080b5
test edi, edi
je 0x40808f
push edi
call fcn.004304f0
add esp, 4
push edi
test al, al
je 0x408087
call fcn.0042fa80
jmp 0x40808c
call fcn.004355d0
add esp, 4
mov eax, dword [esi]
test eax, eax
je 0x40809e
push eax
call fcn.00504903
add esp, 4
mov dword [esi + 4], 0
mov dword [esi], 0
mov esi, 5
jmp 0x4081e0
cmp dword [ebp - 0x25c], 0
je 0x408152
mov eax, dword [esi]
mov ecx, dword [ebp - 0x254]
push dword [ebp - 0x258]
mov byte [ecx + eax], 0xd
mov eax, dword [esi]
mov byte [ecx + eax + 1], 0xa
add ecx, 2
mov eax, dword [esi]
add eax, ecx
mov dword [ebp - 0x254], ecx
push eax
push 0
push edi
call fcn.00430d90
add esp, 0x10
test eax, eax
je 0x408146
cmp eax, 0x600
je 0x408146
test edi, edi
je 0x408120
push edi
call fcn.004304f0
add esp, 4
push edi
test al, al
je 0x408118
call fcn.0042fa80
jmp 0x40811d
call fcn.004355d0
add esp, 4
mov eax, dword [esi]
test eax, eax
je 0x40812f
push eax
call fcn.00504903
add esp, 4
mov dword [esi + 4], 0
mov dword [esi], 0
mov esi, 6
jmp 0x4081e0
mov eax, dword [ebp - 0x258]
add dword [ebp - 0x254], eax
mov eax, dword [esi]
mov ecx, dword [ebp - 0x254]
mov byte [ecx + eax], 0
mov esi, dword [esi]
cmp byte [esi], 0
je 0x4081bd
mov edi, dword [ebp - 0x260]
nop dword [eax + eax]
mov al, byte [esi]
cmp al, 0xd
je 0x40817a
cmp al, 0xa
jne 0x408180
mov byte [esi], 0
inc esi
jmp 0x408170
test al, al
je 0x4081b7
mov dword [ebp - 0x260], esi
nop word [eax + eax]
cmp al, 0xa
je 0x4081a1
cmp byte [esi], 0
je 0x4081a1
mov al, byte [esi + 1]
inc esi
cmp al, 0xd
jne 0x408190
push ecx
push dword [edi]
lea eax, [ebp - 0x260]
mov ecx, edi
push eax
call fcn.0040cca0
cmp byte [esi], 0
jne 0x408170
mov edi, dword [ebp - 0x264]
test edi, edi
je 0x4081de
push edi
call fcn.004304f0
add esp, 4
push edi
test al, al
je 0x4081d6
call fcn.0042fa80
jmp 0x4081db
call fcn.004355d0
add esp, 4
xor esi, esi
lea ecx, [ebp - 0x298]
call fcn.0042f830
mov eax, esi
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.004ff23c
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8