Function at 0x475140
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x68
mov eax, dword [0x4db06c]
xor eax, esp
mov dword [esp + 0x64], eax
push ebx
mov ebx, dword [esp + 0x74]
mov eax, edx
push ebp
push esi
push edi
push 0x9e3779b1
push 0x85ebca87
push 0
mov ebp, ecx
mov dword [esp + 0x78], eax
push eax
mov dword [esp + 0x80], ebp
mov dword [esp + 0x70], ebx
call fcn.00488190
xorps xmm0, xmm0
mov dword [esp + 0x58], eax
lea eax, [ebx + 0x18]
movlpd qword [esp + 0x20], xmm0
mov esi, ebx
mov dword [esp + 0x44], edx
mov ebx, dword [esp + 0x24]
sub esi, ebp
mov dword [esp + 0x30], ebx
mov ecx, ebp
mov ebx, dword [esp + 0x20]
mov dword [esp + 0x2c], eax
mov dword [esp + 0x10], esi
mov dword [esp + 0x28], 4
mov dword [esp + 0x50], ebx
movq xmm0, qword [ecx]
mov ebp, dword [esp + 0x88]
mov edx, dword [esp + 0x8c]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [ecx + 8]
movq qword [esp + 0x38], xmm0
movq xmm0, qword [eax - 0x10]
movq qword [esp + 0x20], xmm0
movq xmm0, qword [esi + ecx]
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
sub esi, ebp
movq qword [esp + 0x48], xmm0
sbb eax, edx
mov ebx, dword [esp + 0x48]
xor eax, dword [esp + 0x3c]
xor esi, dword [esp + 0x38]
add ebx, ebp
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x4c]
adc eax, edx
movq xmm0, qword [ecx + 0x10]
xor eax, dword [esp + 0x1c]
xor ebx, dword [esp + 0x18]
mov dword [esp + 0x48], eax
mov eax, ebx
mul esi
mov ebp, eax
mov edi, edx
mov eax, dword [esp + 0x48]
mul esi
mov esi, eax
mov dword [esp + 0x20], edx
mov eax, ebx
mul dword [esp + 0x34]
add eax, esi
mov ebx, edx
adc ebx, 0
add eax, edi
mov dword [esp + 0x38], eax
adc ebx, 0
xor esi, esi
or esi, ebp
mov ebp, eax
mov eax, dword [esp + 0x48]
mul dword [esp + 0x34]
add eax, ebx
adc edx, 0
add eax, dword [esp + 0x20]
movq qword [esp + 0x20], xmm0
movq xmm0, qword [ecx + 0x18]
adc edx, 0
xor esi, eax
movq qword [esp + 0x18], xmm0
mov eax, dword [esp + 0x1c]
xor ebp, edx
add esi, dword [esp + 0x58]
mov edx, dword [esp + 0x18]
adc ebp, dword [esp + 0x44]
add edx, dword [esp + 0x20]
movq xmm0, qword [ecx + 0x10]
adc eax, dword [esp + 0x24]
xor esi, edx
xor ebp, eax
movq qword [esp + 0x48], xmm0
mov eax, dword [esp + 0x2c]
movq xmm0, qword [ecx + 0x18]
movq qword [esp + 0x20], xmm0
mov dword [esp + 0x58], esi
movq xmm0, qword [eax]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [eax - 8]
mov esi, dword [esp + 0x18]
sub esi, dword [esp + 0x88]
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0x8c]
xor esi, dword [esp + 0x20]
xor eax, dword [esp + 0x24]
mov dword [esp + 0x44], ebp
movq qword [esp + 0x38], xmm0
mov dword [esp + 0x34], eax
mov ebx, dword [esp + 0x38]
lea ecx, [ecx + 0x20]
add ebx, dword [esp + 0x88]
mov eax, dword [esp + 0x3c]
adc eax, dword [esp + 0x8c]
xor eax, dword [esp + 0x4c]
xor ebx, dword [esp + 0x48]
mov dword [esp + 0x48], eax
mov eax, ebx
mul esi
movq xmm0, qword [ecx - 0x20]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [ecx - 0x18]
movq qword [esp + 0x20], xmm0
mov ebp, eax
mov edi, edx
mov eax, dword [esp + 0x48]
mul esi
mov esi, eax
mov dword [esp + 0x38], edx
mov eax, ebx
mul dword [esp + 0x34]
add eax, edi
mov ebx, edx
mov edi, eax
mov eax, dword [esp + 0x48]
adc ebx, 0
add edi, esi
adc ebx, 0
xor esi, esi
mul dword [esp + 0x34]
or esi, ebp
mov ebp, dword [esp + 0x1c]
add eax, ebx
adc edx, 0
add eax, dword [esp + 0x38]
adc edx, 0
xor esi, eax
mov eax, dword [esp + 0x2c]
xor edi, edx
add esi, dword [esp + 0x50]
mov edx, dword [esp + 0x18]
adc edi, dword [esp + 0x30]
add edx, dword [esp + 0x20]
adc ebp, dword [esp + 0x24]
xor esi, edx
xor ebp, edi
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x10]
add eax, 0x20
sub dword [esp + 0x28], 1
mov dword [esp + 0x30], ebp
mov dword [esp + 0x2c], eax
jne 0x4751b5
mov ecx, dword [esp + 0x44]
xor eax, eax
xor eax, dword [esp + 0x44]
push 0x16566791
push 0x9e3779f9
shr ecx, 5
xor ecx, dword [esp + 0x60]
push eax
push ecx
call fcn.00488190
mov ecx, edx
xor ebx, ebx
xor ecx, eax
xor ebx, edx
mov dword [esp + 0x44], ecx
xor eax, eax
push 0x16566791
mov ecx, ebp
mov dword [esp + 0x34], ebx
push 0x9e3779f9
shr ecx, 5
xor eax, ebp
xor ecx, dword [esp + 0x58]
push eax
push ecx
call fcn.00488190
mov ecx, edx
xor ebx, ebx
xor ecx, eax
xor ebx, edx
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x48], ebx
cmp ecx, 0xa0
jb 0x47563c
mov eax, dword [esp + 0x60]
add ecx, 0xffffff80
mov ebp, dword [esp + 0x70]
add eax, 3
sub ebp, 0xffffff80
mov dword [esp + 0x50], eax
shr ecx, 5
mov dword [esp + 0x58], ebp
mov dword [esp + 0x2c], ecx
nop
movq xmm0, qword [ebp]
movq qword [esp + 0x38], xmm0
movq xmm0, qword [ebp + 8]
movq qword [esp + 0x10], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [eax]
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0x8c]
xor eax, dword [esp + 0x14]
xor ecx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
movq qword [esp + 0x20], xmm0
mov edi, dword [esp + 0x20]
add edi, dword [esp + 0x88]
mov ebp, dword [esp + 0x24]
adc ebp, dword [esp + 0x8c]
xor edi, dword [esp + 0x38]
xor ebp, dword [esp + 0x3c]
mov eax, edi
mul ecx
mov dword [esp + 0x20], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x28]
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
adc edi, 0
xor esi, esi
or esi, ebx
mov ebx, eax
mov eax, dword [esp + 0x20]
mul dword [esp + 0x28]
add eax, edi
mov edi, dword [esp + 0x58]
adc edx, 0
add eax, ebp
movq xmm0, qword [edi + 0x10]
adc edx, 0
xor esi, eax
movq qword [esp + 0x10], xmm0
movq xmm0, qword [edi + 0x18]
xor ebx, edx
add esi, dword [esp + 0x44]
movq qword [esp + 0x18], xmm0
adc ebx, dword [esp + 0x30]
mov ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
adc eax, dword [esp + 0x14]
xor esi, ecx
movq xmm0, qword [edi + 0x10]
xor ebx, eax
mov eax, dword [esp + 0x50]
movq qword [esp + 0x38], xmm0
movq xmm0, qword [edi + 0x18]
movq qword [esp + 0x10], xmm0
movq xmm0, qword [eax + 0x18]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [eax + 0x10]
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0x8c]
xor eax, dword [esp + 0x14]
xor ecx, dword [esp + 0x10]
movq qword [esp + 0x20], xmm0
mov edi, dword [esp + 0x20]
add edi, dword [esp + 0x88]
mov dword [esp + 0x44], esi
mov dword [esp + 0x30], ebx
mov dword [esp + 0x28], eax
mov ebp, dword [esp + 0x24]
adc ebp, dword [esp + 0x8c]
xor edi, dword [esp + 0x38]
xor ebp, dword [esp + 0x3c]
mov eax, edi
mul ecx
mov dword [esp + 0x20], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x28]
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
adc edi, 0
xor esi, esi
or esi, ebx
mov ebx, eax
mov eax, dword [esp + 0x20]
mul dword [esp + 0x28]
add eax, edi
adc edx, 0
add eax, ebp
mov ebp, dword [esp + 0x58]
adc edx, 0
xor esi, eax
xor ebx, edx
add esi, dword [esp + 0x34]
movq xmm0, qword [ebp]
adc ebx, dword [esp + 0x48]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [ebp + 8]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
movq qword [esp + 0x10], xmm0
add ecx, dword [esp + 0x10]
adc eax, dword [esp + 0x14]
xor esi, ecx
xor ebx, eax
mov dword [esp + 0x34], esi
mov eax, dword [esp + 0x50]
add ebp, 0x20
add eax, 0x20
mov dword [esp + 0x48], ebx
sub dword [esp + 0x2c], 1
mov dword [esp + 0x50], eax
mov dword [esp + 0x58], ebp
jne 0x475440
mov ecx, dword [esp + 0x6c]
mov eax, dword [esp + 0x70]
mov edx, dword [esp + 0x88]
mov ebx, dword [esp + 0x8c]
neg edx
mov dword [esp + 0x20], edx
movq xmm0, qword [ecx + eax - 0x10]
adc ebx, 0
movq qword [esp + 0x58], xmm0
neg ebx
movq xmm0, qword [ecx + eax - 8]
mov eax, dword [esp + 0x60]
movq qword [esp + 0x10], xmm0
mov dword [esp + 0x38], ebx
movq xmm0, qword [eax + 0x6f]
movq qword [esp + 0x18], xmm0
movq xmm0, qword [eax + 0x67]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x1c]
sub ecx, edx
movq qword [esp + 0x50], xmm0
sbb eax, ebx
mov edi, dword [esp + 0x50]
xor eax, dword [esp + 0x14]
xor ecx, dword [esp + 0x10]
add edi, edx
mov ebp, dword [esp + 0x54]
adc ebp, ebx
mov dword [esp + 0x28], eax
xor edi, dword [esp + 0x58]
xor ebp, dword [esp + 0x5c]
mov eax, edi
mul ecx
mov dword [esp + 0x10], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x28]
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x10]
adc edi, 0
mul dword [esp + 0x28]
xor esi, esi
or esi, ebx
mov ebx, dword [esp + 0x2c]
add eax, edi
mov edi, dword [esp + 0x70]
adc edx, 0
add eax, ebp
mov ebp, dword [esp + 0x6c]
adc edx, 0
xor esi, eax
xor ebx, edx
add esi, dword [esp + 0x44]
movq xmm0, qword [edi + ebp - 0x20]
adc ebx, dword [esp + 0x30]
movq qword [esp + 0x10], xmm0
movq xmm0, qword [edi + ebp - 0x18]
movq qword [esp + 0x18], xmm0
mov ecx, dword [esp + 0x18]
add ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
adc eax, dword [esp + 0x14]
xor esi, ecx
movq xmm0, qword [edi + ebp - 0x20]
xor ebx, eax
mov eax, dword [esp + 0x60]
movq qword [esp + 0x50], xmm0
movq xmm0, qword [edi + ebp - 0x18]
movq qword [esp + 0x10], xmm0
movq xmm0, qword [eax + 0x7f]
mov dword [esp + 0x30], esi
mov dword [esp + 0x2c], ebx
movq qword [esp + 0x18], xmm0
movq xmm0, qword [eax + 0x77]
mov ecx, dword [esp + 0x18]
sub ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x1c]
sbb eax, dword [esp + 0x38]
xor eax, dword [esp + 0x14]
xor ecx, dword [esp + 0x10]
mov dword [esp + 0x28], eax
movq qword [esp + 0x60], xmm0
mov edi, dword [esp + 0x60]
add edi, dword [esp + 0x20]
mov ebp, dword [esp + 0x64]
adc ebp, dword [esp + 0x38]
xor edi, dword [esp + 0x50]
xor ebp, dword [esp + 0x54]
mov eax, edi
mul ecx
mov dword [esp + 0x10], ebp
mov ebx, eax
mov esi, edx
mov eax, ebp
mul ecx
push 0x16566791
mov ecx, eax
mov ebp, edx
mov eax, edi
mul dword [esp + 0x2c]
push 0x9e3779f9
add eax, esi
mov edi, edx
adc edi, 0
add eax, ecx
adc edi, 0
xor esi, esi
or esi, ebx
mov ebx, eax
mov eax, dword [esp + 0x18]
mul dword [esp + 0x30]
add eax, edi
mov edi, dword [esp + 0x74]
adc edx, 0
add eax, ebp
mov ebp, dword [esp + 0x78]
adc edx, 0
xor esi, eax
xor ebx, edx
add esi, dword [esp + 0x3c]
adc ebx, dword [esp + 0x50]
movq xmm0, qword [edi + ebp - 0x10]
movq qword [esp + 0x20], xmm0
movq xmm0, qword [edi + ebp - 8]
mov ecx, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
movq qword [esp + 0x18], xmm0
add ecx, dword [esp + 0x18]
adc eax, dword [esp + 0x1c]
xor esi, ecx
mov ecx, dword [esp + 0x34]
xor ebx, eax
mov dword [esp + 0x18], esi
mov esi, dword [esp + 0x38]
mov ebp, dword [esp + 0x18]
add esi, ebp
mov dword [esp + 0x68], ebx
adc ecx, ebx
xor eax, eax
mov edx, ecx
xor eax, ecx
shr edx, 5
xor edx, esi
push eax
push edx
call fcn.00488190
mov ebx, dword [esp + 0x7c]
xor esi, esi
mov ecx, edx
xor esi, edx
xor ecx, eax
sub edi, dword [esp + 0x88]
mov dword [ebx], ecx
mov dword [ebx + 4], esi
push 0xc2b2ae3d
mov eax, 0
sbb eax, dword [esp + 0x90]
push 0x27d4eb4f
push eax
push edi
call fcn.00488190
push 0x9e3779b1
push 0x85ebca87
push dword [esp + 0x34]
mov esi, eax
mov edi, edx
push dword [esp + 0x3c]
call fcn.00488190
push 0x85ebca77
add esi, eax
mov eax, dword [esp + 0x64]
push 0xc2b2ae63
push eax
push ebp
adc edi, edx
call fcn.00488190
add esi, eax
push 0x16566791
adc edi, edx
xor eax, eax
mov ecx, edi
xor eax, edi
push 0x9e3779f9
shr ecx, 5
xor ecx, esi
push eax
push ecx
call fcn.00488190
xor esi, esi
mov ecx, edx
xor ecx, eax
xor esi, edx
neg ecx
mov eax, ebx
pop edi
adc esi, 0
mov dword [ebx + 8], ecx
mov ecx, dword [esp + 0x70]
neg esi
mov dword [ebx + 0xc], esi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00487555
add esp, 0x68
ret