Function at 0x403c70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
push esi
mov dword [ebp - 0x34], ecx
mov dword [ebp - 0xc], edx
push edi
mov edi, dword [ebp + 0x10]
movzx eax, byte [edi + 7]
cdq
mov esi, eax
mov ecx, edx
shld ecx, esi, 8
movzx eax, byte [edi + 6]
cdq
or ecx, edx
shl esi, 8
or esi, eax
movzx eax, byte [edi + 5]
shld ecx, esi, 8
cdq
or ecx, edx
shl esi, 8
or esi, eax
movzx eax, byte [edi + 4]
shld ecx, esi, 8
cdq
or ecx, edx
shl esi, 8
or esi, eax
movzx eax, byte [edi + 3]
shld ecx, esi, 8
cdq
or ecx, edx
shl esi, 8
or esi, eax
movzx eax, byte [edi + 2]
shld ecx, esi, 8
cdq
or ecx, edx
shl esi, 8
or esi, eax
movzx eax, byte [edi + 1]
shld ecx, esi, 8
cdq
or ecx, edx
shl esi, 8
or esi, eax
movzx eax, byte [edi]
shld ecx, esi, 8
cdq
or ecx, edx
shl esi, 8
or esi, eax
mov dword [ebp - 0x14], ecx
movzx eax, byte [edi + 0xf]
cdq
mov ebx, eax
mov ecx, edx
movzx eax, byte [edi + 0xe]
shld ecx, ebx, 8
cdq
shl ebx, 8
or ecx, edx
or ebx, eax
movzx eax, byte [edi + 0xd]
shld ecx, ebx, 8
cdq
shl ebx, 8
or ecx, edx
or ebx, eax
movzx eax, byte [edi + 0xc]
shld ecx, ebx, 8
cdq
shl ebx, 8
or ecx, edx
or ebx, eax
movzx eax, byte [edi + 0xb]
shld ecx, ebx, 8
cdq
shl ebx, 8
or ebx, eax
or ecx, edx
movzx eax, byte [edi + 0xa]
shld ecx, ebx, 8
cdq
or ecx, edx
shl ebx, 8
or ebx, eax
mov dword [ebp - 8], 0
movzx eax, byte [edi + 9]
shld ecx, ebx, 8
cdq
or ecx, edx
shl ebx, 8
or ebx, eax
movzx eax, byte [edi + 8]
shld ecx, ebx, 8
cdq
or ecx, edx
shl ebx, 8
mov edx, dword [ebp + 8]
or ebx, eax
mov eax, edx
mov edi, edx
shl edx, 0x18
and eax, 7
mov dword [ebp + 8], edx
sub edi, eax
mov edx, ebx
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0xc]
xor edx, 0x79746573
mov dword [ebp - 0x18], edx
add edi, eax
mov edx, ecx
mov dword [ebp - 0x20], edi
mov edi, dword [ebp - 0x14]
xor edx, 0x74656462
mov dword [ebp - 0x10], edx
xor ebx, 0x6e646f6d
mov edx, esi
mov dword [ebp - 0x1c], ebx
xor edx, 0x6e657261
xor ecx, 0x646f7261
mov dword [ebp + 0x10], edx
xor esi, 0x70736575
mov edx, edi
mov dword [ebp - 0x14], ecx
xor edx, 0x6c796765
xor edi, 0x736f6d65
mov dword [ebp - 4], edx
cmp eax, dword [ebp - 0x20]
je 0x403fe5
movzx eax, byte [eax + 7]
cdq
mov ecx, eax
mov ebx, edx
mov eax, dword [ebp - 0xc]
shld ebx, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 6]
cdq
or ecx, eax
or ebx, edx
mov eax, dword [ebp - 0xc]
shld ebx, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 5]
cdq
or ecx, eax
or ebx, edx
mov eax, dword [ebp - 0xc]
shld ebx, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 4]
cdq
or ecx, eax
or ebx, edx
mov eax, dword [ebp - 0xc]
shld ebx, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 3]
cdq
or ecx, eax
or ebx, edx
mov eax, dword [ebp - 0xc]
shld ebx, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 2]
cdq
or ecx, eax
or ebx, edx
mov eax, dword [ebp - 0xc]
shld ebx, ecx, 8
shl ecx, 8
movzx eax, byte [eax + 1]
cdq
or ecx, eax
or ebx, edx
mov eax, dword [ebp - 0xc]
shld ebx, ecx, 8
shl ecx, 8
movzx eax, byte [eax]
cdq
or ecx, eax
or ebx, edx
xor dword [ebp - 0x18], ecx
xor dword [ebp - 0x10], ebx
mov edx, dword [ebp - 0x14]
mov eax, edx
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 0x1c]
add esi, ecx
mov dword [ebp - 0x2c], ebx
adc edi, edx
shr eax, 0x13
shld edx, ecx, 0xd
mov dword [ebp - 0x14], edi
xor edi, edi
mov ebx, dword [ebp - 0x14]
or edi, edx
shl ecx, 0xd
xor edi, ebx
or eax, ecx
mov ecx, dword [ebp - 0x10]
xor eax, esi
mov edx, ecx
mov dword [ebp - 0x1c], eax
mov eax, dword [ebp - 0x18]
add dword [ebp + 0x10], eax
adc dword [ebp - 4], ecx
xor ecx, ecx
shr edx, 0x10
shld dword [ebp - 0x10], eax, 0x10
or ecx, dword [ebp - 0x10]
xor ecx, dword [ebp - 4]
shl eax, 0x10
or edx, eax
mov dword [ebp - 0x10], 0
xor edx, dword [ebp + 0x10]
xor eax, eax
or esi, eax
add ebx, edx
mov eax, ecx
mov dword [ebp - 0x18], ebx
adc esi, ecx
shr eax, 0xb
shld ecx, edx, 0x15
xor ebx, ebx
or ebx, ecx
shl edx, 0x15
or eax, edx
xor ebx, esi
xor eax, dword [ebp - 0x18]
mov ecx, edi
mov edx, dword [ebp - 0x1c]
add dword [ebp + 0x10], edx
mov dword [ebp - 0x14], eax
adc dword [ebp - 4], edi
xor eax, eax
shld edi, edx, 0x11
shr ecx, 0xf
or eax, edi
shl edx, 0x11
xor eax, dword [ebp - 4]
or ecx, edx
xor ecx, dword [ebp + 0x10]
mov edi, eax
add dword [ebp - 0x18], ecx
adc esi, eax
shr edi, 0x13
shld eax, ecx, 0xd
xor edx, edx
shl ecx, 0xd
or edx, eax
or edi, ecx
xor eax, eax
xor edi, dword [ebp - 0x18]
xor edx, esi
or eax, dword [ebp + 0x10]
mov ecx, ebx
mov dword [ebp - 0x1c], edi
mov edi, dword [ebp - 0x14]
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 4]
add edx, edi
adc eax, ebx
shr ecx, 0x10
shld ebx, edi, 0x10
mov dword [ebp + 0x10], eax
xor eax, eax
shl edi, 0x10
or eax, ebx
xor eax, dword [ebp + 0x10]
or ecx, edi
xor ecx, edx
xor edi, edi
or edi, dword [ebp - 0x18]
mov ebx, eax
add esi, ecx
adc edi, eax
shr ebx, 0xb
shld eax, ecx, 0x15
shl ecx, 0x15
or ebx, ecx
mov ecx, dword [ebp - 0x10]
or ecx, eax
xor ebx, esi
mov eax, dword [ebp - 0x24]
xor ecx, edi
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x1c]
add edx, ecx
mov dword [ebp - 0x18], ebx
adc dword [ebp + 0x10], eax
xor esi, dword [ebp - 0x28]
mov ebx, eax
xor edi, dword [ebp - 0x2c]
shld eax, ecx, 0x11
shr ebx, 0xf
shl ecx, 0x11
or ebx, ecx
mov dword [ebp - 0x14], 0
mov ecx, dword [ebp - 0x14]
xor ebx, edx
or ecx, eax
mov dword [ebp - 0x1c], ebx
xor ecx, dword [ebp + 0x10]
xor eax, eax
or eax, edx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 4], eax
mov eax, dword [ebp - 0xc]
add eax, 8
mov dword [ebp - 0xc], eax
cmp eax, dword [ebp - 0x20]
jne 0x403df0
mov edx, dword [ebp - 0x30]
dec edx
cmp edx, 6
ja case.default.0x403fee
jmp dword [edx*4 + 0x40442c]
movzx eax, byte [eax + 6]
cdq
shl eax, 0x10
or dword [ebp + 8], eax
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 5]
cdq
shl eax, 8
or dword [ebp + 8], eax
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 4]
cdq
or dword [ebp + 8], eax
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 3]
cdq
shld edx, eax, 0x18
shl eax, 0x18
or dword [ebp - 8], eax
or dword [ebp + 8], edx
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 2]
cdq
shld edx, eax, 0x10
shl eax, 0x10
or dword [ebp - 8], eax
or dword [ebp + 8], edx
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax + 1]
cdq
shld edx, eax, 8
shl eax, 8
or dword [ebp - 8], eax
or dword [ebp + 8], edx
mov eax, dword [ebp - 0xc]
movzx eax, byte [eax]
cdq
or dword [ebp - 8], eax
or dword [ebp + 8], edx
mov eax, dword [ebp - 8]
xor dword [ebp - 0x18], eax
mov eax, dword [ebp - 0x10]
xor eax, dword [ebp + 8]
add esi, ebx
mov dword [ebp - 0x10], eax
adc edi, ecx
xor edx, edx
mov dword [ebp - 0x14], edi
mov edi, ecx
shld ecx, ebx, 0xd
shr edi, 0x13
or edx, ecx
shl ebx, 0xd
xor edx, dword [ebp - 0x14]
or edi, ebx
mov ebx, dword [ebp - 0x18]
xor edi, esi
add dword [ebp + 0x10], ebx
mov ecx, eax
adc dword [ebp - 4], eax
xor eax, eax
shld dword [ebp - 0x10], ebx, 0x10
or eax, dword [ebp - 0x10]
xor eax, dword [ebp - 4]
shr ecx, 0x10
shl ebx, 0x10
or ecx, ebx
xor ebx, ebx
xor ecx, dword [ebp + 0x10]
or ebx, esi
add dword [ebp - 0x14], ecx
adc ebx, eax
xor esi, esi
mov dword [ebp - 0x10], ebx
mov ebx, eax
shld eax, ecx, 0x15
shr ebx, 0xb
shl ecx, 0x15
or esi, eax
xor esi, dword [ebp - 0x10]
or ebx, ecx
xor ebx, dword [ebp - 0x14]
mov ecx, edx
add dword [ebp + 0x10], edi
adc dword [ebp - 4], edx
xor eax, eax
shld edx, edi, 0x11
shr ecx, 0xf
or eax, edx
shl edi, 0x11
xor eax, dword [ebp - 4]
or ecx, edi
xor ecx, dword [ebp + 0x10]
mov edx, eax
add dword [ebp - 0x14], ecx
adc dword [ebp - 0x10], eax
xor edi, edi
shld eax, ecx, 0xd
shr edx, 0x13
shl ecx, 0xd
or edi, eax
xor edi, dword [ebp - 0x10]
or edx, ecx
xor edx, dword [ebp - 0x14]
mov ecx, esi
mov dword [ebp - 0x30], edx
xor edx, edx
or edx, dword [ebp + 0x10]
add dword [ebp - 4], ebx
adc edx, esi
shr ecx, 0x10
shld esi, ebx, 0x10
xor eax, eax
mov dword [ebp + 0x10], edx
shl ebx, 0x10
or eax, esi
or ecx, ebx
xor eax, edx
xor ecx, dword [ebp - 4]
xor edx, edx
or edx, dword [ebp - 0x14]
mov esi, eax
add dword [ebp - 0x10], ecx
adc edx, eax
shr esi, 0xb
shld eax, ecx, 0x15
xor ebx, ebx
shl ecx, 0x15
or ebx, eax
or esi, ecx
xor ebx, edx
xor esi, dword [ebp - 0x10]
mov ecx, edi
mov dword [ebp - 0x2c], esi
mov esi, dword [ebp - 0x30]
add dword [ebp - 4], esi
adc dword [ebp + 0x10], edi
xor eax, eax
shld edi, esi, 0x11
shr ecx, 0xf
shl esi, 0x11
or eax, edi
xor eax, dword [ebp + 0x10]
or ecx, esi
xor ecx, dword [ebp - 4]
mov edi, dword [ebp - 8]
xor edi, dword [ebp - 0x10]
mov esi, dword [ebp + 8]
xor esi, edx
add edi, ecx
mov edx, eax
mov dword [ebp - 8], edi
adc esi, eax
shr edx, 0x13
shld eax, ecx, 0xd
xor edi, edi
mov dword [ebp + 8], esi
shl ecx, 0xd
or edi, eax
mov eax, dword [ebp + 0x10]
or edx, ecx
xor edx, dword [ebp - 8]
xor edi, esi
xor esi, esi
mov dword [ebp - 0x30], edx
or esi, dword [ebp - 4]
xor eax, 0xff
mov edx, dword [ebp - 0x2c]
xor esi, 0
add eax, edx
mov ecx, ebx
mov dword [ebp + 0x10], eax
adc esi, ebx
shr ecx, 0x10
shld ebx, edx, 0x10
xor eax, eax
mov dword [ebp - 0x14], esi
shl edx, 0x10
or eax, ebx
or ecx, edx
xor eax, esi
xor ecx, dword [ebp + 0x10]
xor ebx, ebx
or ebx, dword [ebp - 8]
mov esi, eax
add dword [ebp + 8], ecx
adc ebx, eax
xor edx, edx
shld eax, ecx, 0x15
shr esi, 0xb
shl ecx, 0x15
or edx, eax
or esi, ecx
mov dword [ebp - 0x10], ebx
xor esi, dword [ebp + 8]
xor edx, ebx
mov ebx, dword [ebp - 0x30]
mov ecx, edi
add dword [ebp + 0x10], ebx
adc dword [ebp - 0x14], edi
shr ecx, 0xf
shld edi, ebx, 0x11
xor eax, eax
or eax, edi
shl ebx, 0x11
xor eax, dword [ebp - 0x14]
or ecx, ebx
xor ecx, dword [ebp + 0x10]
mov ebx, eax
add dword [ebp + 8], ecx
adc dword [ebp - 0x10], eax
xor edi, edi
shld eax, ecx, 0xd
shr ebx, 0x13
or edi, eax
shl ecx, 0xd
xor edi, dword [ebp - 0x10]
or ebx, ecx
xor ebx, dword [ebp + 8]
xor eax, eax
or eax, dword [ebp + 0x10]
mov ecx, edx
add dword [ebp - 0x14], esi
adc eax, edx
shr ecx, 0x10
shld edx, esi, 0x10
mov dword [ebp + 0x10], eax
xor eax, eax
or eax, edx
shl esi, 0x10
xor eax, dword [ebp + 0x10]
or ecx, esi
xor ecx, dword [ebp - 0x14]
xor edx, edx
or edx, dword [ebp + 8]
mov esi, eax
add dword [ebp - 0x10], ecx
adc edx, eax
shr esi, 0xb
shld eax, ecx, 0x15
mov dword [ebp + 0xc], edx
xor edx, edx
shl ecx, 0x15
or edx, eax
xor edx, dword [ebp + 0xc]
or esi, ecx
xor esi, dword [ebp - 0x10]
mov ecx, edi
add dword [ebp - 0x14], ebx
adc dword [ebp + 0x10], edi
xor eax, eax
shld edi, ebx, 0x11
shr ecx, 0xf
shl ebx, 0x11
or eax, edi
xor eax, dword [ebp + 0x10]
or ecx, ebx
xor ecx, dword [ebp - 0x14]
mov edi, eax
add dword [ebp - 0x10], ecx
adc dword [ebp + 0xc], eax
xor ebx, ebx
shld eax, ecx, 0xd
shr edi, 0x13
or ebx, eax
shl ecx, 0xd
xor ebx, dword [ebp + 0xc]
or edi, ecx
xor edi, dword [ebp - 0x10]
mov ecx, edx
mov dword [ebp - 0x2c], ebx
xor ebx, ebx
or ebx, dword [ebp - 0x14]
mov dword [ebp - 0x30], edi
mov edi, dword [ebp + 0x10]
add edi, esi
mov dword [ebp + 0x10], edi
adc ebx, edx
shr ecx, 0x10
xor eax, eax
mov dword [ebp - 0x14], ebx
shld edx, esi, 0x10
or eax, edx
shl esi, 0x10
or ecx, esi
xor eax, ebx
mov esi, dword [ebp + 0xc]
xor ecx, edi
xor edi, edi
mov edx, eax
or edi, dword [ebp - 0x10]
add esi, ecx
mov dword [ebp + 0xc], esi
adc edi, eax
shr edx, 0xb
shld eax, ecx, 0x15
xor ebx, ebx
or ebx, eax
shl ecx, 0x15
mov eax, dword [ebp - 0x2c]
or edx, ecx
mov ecx, dword [ebp - 0x30]
xor edx, esi
xor ebx, edi
mov dword [ebp - 0x28], edx
add dword [ebp + 0x10], ecx
mov esi, eax
mov dword [ebp - 0x24], ebx
mov ebx, dword [ebp - 0x14]
adc ebx, eax
xor edx, edx
shld eax, ecx, 0x11
shr esi, 0xf
or edx, eax
shl ecx, 0x11
xor edx, ebx
or esi, ecx
xor esi, dword [ebp + 0x10]
mov eax, edx
shr eax, 0x13
mov ecx, edx
mov dword [ebp - 0x18], eax
mov eax, esi
shld ecx, eax, 0xd
shl eax, 0xd
or dword [ebp - 0x18], eax
xor eax, eax
or eax, ecx
add esi, dword [ebp + 0xc]
mov dword [ebp - 0x30], eax
adc edx, edi
xor dword [ebp - 0x18], esi
mov edi, eax
xor esi, esi
or esi, dword [ebp + 0x10]
xor edi, edx
mov edx, dword [ebp - 0x28]
add ebx, edx
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x24]
adc esi, ebx
mov ecx, ebx
xor eax, eax
shld ebx, edx, 0x10
shr ecx, 0x10
shl edx, 0x10
or eax, ebx
or ecx, edx
xor eax, esi
mov edx, dword [ebp - 0x14]
xor ecx, edx
add edx, dword [ebp - 0x18]
mov dword [ebp - 0x14], edx
mov edx, eax
adc esi, edi
shr edx, 0xb
shld eax, ecx, 0x15
xor ebx, ebx
mov dword [ebp + 0x10], esi
shl ecx, 0x15
or edx, ecx
or ebx, eax
mov eax, esi
mov esi, dword [ebp - 0x18]
xor ecx, ecx
or ecx, dword [ebp - 0x14]
xor edx, eax
xor ebx, ecx
mov dword [ebp + 0xc], 0
mov ecx, edi
xor eax, eax
shld edi, esi, 0x11
shr ecx, 0xf
or eax, edi
shl esi, 0x11
xor ebx, eax
or ecx, esi
xor ebx, dword [ebp + 0x10]
xor edx, ecx
mov ecx, dword [ebp - 0x34]
xor edx, dword [ebp - 0x14]
mov eax, edx
shr eax, 8
mov byte [ecx + 1], al
mov eax, edx
shr eax, 0x10
mov byte [ecx + 2], al
mov eax, ebx
shr eax, 8
mov byte [ecx + 5], al
mov eax, ebx
mov byte [ecx + 4], bl
shr ebx, 0x18
pop edi
shr eax, 0x10
mov byte [ecx], dl
shr edx, 0x18
pop esi
mov byte [ecx + 6], al
xor eax, eax
mov byte [ecx + 7], bl
mov byte [ecx + 3], dl
pop ebx
mov esp, ebp
pop ebp
ret