Function at 0x470350
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x54
mov eax, dword [0x717f80]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0x10]
mov ecx, eax
push ebx
mov ebx, dword [ebp + 8]
push esi
mov esi, dword [ebp + 0xc]
mov dword [ebp - 0x54], eax
call fcn.00496de0
test ebx, ebx
je 0x470828
test esi, esi
je 0x470828
mov ecx, esi
lea edx, [ecx + 1]
nop word [eax + eax]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x470390
sub ecx, edx
cmp ecx, 8
jb 0x470828
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4703a7
sub ecx, edx
cmp ecx, 9
jb 0x470828
push edi
push 0x10
lea eax, [ebp - 0x1c]
push esi
push eax
call fcn.00477df0
movsx edx, byte [ebx]
add esp, 0xc
movsx ecx, byte [ebx + 1]
mov esi, edx
movsx edi, byte [ebx + 2]
sub esi, ecx
mov eax, ecx
mov dword [ebp - 0x34], ecx
sub eax, edx
mov dword [ebp - 0x30], edx
mov dword [ebp - 0x2c], edi
cmovns esi, eax
mov byte [ebp - 0xc], 0
neg esi
mov eax, edi
sub eax, ecx
sub ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [esi + ecx]
movsx esi, byte [ebx + 3]
cmovns edx, eax
mov dword [ebp - 0x20], esi
mov eax, esi
mov ecx, edi
sub ecx, esi
sub eax, edi
movsx edi, byte [ebx + 4]
cmovns ecx, eax
mov dword [ebp - 0x28], edi
mov eax, edx
sub eax, ecx
test edx, edx
lea esi, [ecx + edx]
mov ecx, dword [ebp - 0x20]
cmovns esi, eax
mov eax, edi
sub eax, ecx
sub ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [ecx + esi]
movsx esi, byte [ebx + 5]
cmovns edx, eax
mov dword [ebp - 0x24], esi
mov eax, esi
mov ecx, edi
sub ecx, esi
sub eax, edi
cmovns ecx, eax
mov eax, edx
sub eax, ecx
test edx, edx
lea esi, [edx + ecx]
movsx edx, byte [ebx + 6]
mov ecx, dword [ebp - 0x24]
cmovns esi, eax
mov eax, edx
mov dword [ebp - 0x38], edx
sub eax, ecx
sub ecx, edx
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edi, [esi + ecx]
movsx esi, byte [ebx + 7]
cmovns edi, eax
mov eax, esi
mov dword [ebp - 0x3c], esi
sub eax, edx
mov ecx, edi
sub edx, esi
test eax, eax
cmovns edx, eax
sub ecx, edx
test edi, edi
lea eax, [edx + edi]
cmovns eax, ecx
cdq
xor eax, edx
sub eax, edx
lea ecx, [eax + 0x30]
cmp ecx, 0x30
jl 0x4704b3
cmp ecx, 0x39
jle 0x4704f1
cmp ecx, 0x61
jl 0x4704bd
cmp ecx, 0x7a
jle 0x4704f1
cmp ecx, 0x41
jl 0x4704c7
cmp ecx, 0x5a
jle 0x4704f1
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x4704d8
cmp ecx, 0x39
jle 0x4704f1
cmp ecx, 0x61
jl 0x4704e2
cmp ecx, 0x7a
jle 0x4704f1
cmp ecx, 0x41
jl 0x4704ec
cmp ecx, 0x5a
jle 0x4704f1
mov ecx, 0x78
movsx eax, byte [ebx + 8]
mov dl, byte [ebp - 0x1c]
mov dword [ebp - 0x48], eax
xor eax, dword [ebp - 0x28]
xor eax, dword [ebp - 0x2c]
xor eax, dword [ebp - 0x30]
xor eax, dword [ebp - 0x34]
xor eax, dword [ebp - 0x20]
xor eax, esi
mov byte [ebp - 0x14], cl
xor eax, dword [ebp - 0x24]
xor eax, dword [ebp - 0x38]
cmp eax, 0x30
jge 0x47051e
movsx eax, dl
inc eax
mov cl, byte [ebp - 0x1b]
cmp eax, 0x7a
jle 0x47052a
movsx eax, cl
inc eax
cmp eax, 0x30
jl 0x470534
cmp eax, 0x39
jle 0x47054d
cmp eax, 0x61
jl 0x47053e
cmp eax, 0x7a
jle 0x47054d
cmp eax, 0x41
jl 0x470548
cmp eax, 0x5a
jle 0x47054d
mov eax, 0x52
movsx edi, byte [ebp - 0x1a]
mov byte [ebp - 0x13], al
movsx ecx, cl
mov eax, ecx
movsx esi, dl
sub eax, esi
mov dword [ebp - 0x4c], edi
sub esi, ecx
test eax, eax
cmovns esi, eax
mov eax, edi
sub eax, ecx
neg esi
sub ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [esi + ecx]
movsx esi, byte [ebp - 0x19]
cmovns edx, eax
mov dword [ebp - 0x44], esi
mov eax, esi
mov ecx, edi
sub ecx, esi
sub eax, edi
movsx edi, byte [ebp - 0x18]
cmovns ecx, eax
mov dword [ebp - 0x50], edi
mov eax, edx
sub eax, ecx
test edx, edx
lea esi, [ecx + edx]
mov ecx, dword [ebp - 0x44]
cmovns esi, eax
mov eax, edi
sub eax, ecx
sub ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [ecx + esi]
movsx esi, byte [ebp - 0x17]
cmovns edx, eax
mov dword [ebp - 0x40], esi
mov ecx, edi
mov eax, esi
sub ecx, esi
sub eax, edi
movsx edi, byte [ebp - 0x16]
cmovns ecx, eax
mov eax, edx
sub eax, ecx
test edx, edx
lea esi, [ecx + edx]
mov ecx, dword [ebp - 0x40]
cmovns esi, eax
mov eax, edi
sub eax, ecx
sub ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, esi
sub eax, ecx
test esi, esi
lea edx, [ecx + esi]
cmovns edx, eax
movsx eax, byte [ebp - 0x15]
mov ecx, eax
sub ecx, edi
sub edi, eax
test ecx, ecx
mov eax, edx
cmovns edi, ecx
sub eax, edi
test edx, edx
lea ecx, [edi + edx]
cmovns ecx, eax
mov esi, dword [ebp - 0x2c]
mov eax, esi
mov edx, dword [ebp - 0x30]
sub eax, edx
sub edx, esi
mov edi, dword [ebp - 0x20]
test eax, eax
cmovns edx, eax
mov eax, ecx
sub eax, edx
add edx, ecx
test ecx, ecx
mov ecx, dword [ebp - 0x34]
cmovns edx, eax
mov eax, edi
sub eax, ecx
sub ecx, edi
test eax, eax
cmovns ecx, eax
mov eax, edx
sub eax, ecx
add ecx, edx
test edx, edx
cmovns ecx, eax
mov eax, dword [ebp - 0x28]
sub eax, esi
sub esi, dword [ebp - 0x28]
test eax, eax
cmovns esi, eax
mov eax, ecx
sub eax, esi
test ecx, ecx
lea edx, [esi + ecx]
mov esi, dword [ebp - 0x24]
cmovns edx, eax
mov eax, esi
sub eax, edi
sub edi, esi
test eax, eax
cmovns edi, eax
mov eax, edx
sub eax, edi
test edx, edx
lea ecx, [edi + edx]
mov edi, dword [ebp - 0x38]
mov edx, dword [ebp - 0x28]
cmovns ecx, eax
mov eax, edi
sub eax, edx
sub edx, edi
test eax, eax
cmovns edx, eax
mov eax, ecx
sub eax, edx
add edx, ecx
test ecx, ecx
cmovns edx, eax
mov eax, dword [ebp - 0x3c]
sub eax, esi
sub esi, dword [ebp - 0x3c]
test eax, eax
cmovns esi, eax
mov eax, edx
sub eax, esi
test edx, edx
lea ecx, [esi + edx]
mov esi, dword [ebp - 0x3c]
cmovns ecx, eax
mov eax, dword [ebp - 0x48]
sub eax, edi
sub edi, dword [ebp - 0x48]
test eax, eax
cmovns edi, eax
mov eax, ecx
sub eax, edi
test ecx, ecx
lea edx, [edi + ecx]
cmovns edx, eax
movsx eax, byte [ebx + 9]
mov ecx, eax
sub ecx, esi
sub esi, eax
test ecx, ecx
pop edi
cmovns esi, ecx
mov ecx, edx
sub ecx, esi
test edx, edx
lea eax, [esi + edx]
cmovns eax, ecx
cdq
xor eax, edx
sub eax, edx
lea ecx, [eax + 0x30]
cmp ecx, 0x30
jl 0x470701
cmp ecx, 0x39
jle 0x47073f
cmp ecx, 0x61
jl 0x47070b
cmp ecx, 0x7a
jle 0x47073f
cmp ecx, 0x41
jl 0x470715
cmp ecx, 0x5a
jle 0x47073f
mov ecx, 0x7a
sub ecx, eax
cmp ecx, 0x30
jl 0x470726
cmp ecx, 0x39
jle 0x47073f
cmp ecx, 0x61
jl 0x470730
cmp ecx, 0x7a
jle 0x47073f
cmp ecx, 0x41
jl 0x47073a
cmp ecx, 0x5a
jle 0x47073f
mov ecx, 0x6e
mov byte [ebp - 0x12], cl
xor edx, edx
xor ecx, ecx
movsx eax, byte [ebx + ecx]
add ecx, 2
xor edx, eax
cmp ecx, 0xa
jl 0x470746
movd xmm0, dword [ebp - 0x1c]
movd xmm1, dword [ebp - 0x18]
punpcklbw xmm0, xmm0
punpcklbw xmm1, xmm1
punpcklwd xmm0, xmm0
punpcklwd xmm1, xmm1
mov ecx, dword [ebp - 0x4c]
psrad xmm0, 0x18
psrad xmm1, 0x18
xorps xmm1, xmm0
movaps xmm0, xmm1
psrldq xmm0, 8
xorps xmm1, xmm0
movups xmm0, xmm1
psrldq xmm0, 4
xorps xmm1, xmm0
movd eax, xmm1
xor edx, eax
mov eax, dword [ebp - 0x40]
add eax, 0x14
cmp edx, 0x30
cmovge eax, edx
add ecx, 0xfffffff6
cmp eax, 0x7a
cmovle ecx, eax
mov eax, dword [ebp - 0x44]
add eax, 0x14
cmp ecx, 0x30
cmovge eax, ecx
mov ecx, dword [ebp - 0x50]
add ecx, 0xfffffff6
cmp eax, 0x7a
cmovle ecx, eax
cmp ecx, 0x30
jl 0x4707d3
mov eax, ecx
cmp ecx, 0x39
jle 0x4707f0
cmp ecx, 0x61
jl 0x4707df
mov eax, ecx
cmp ecx, 0x7a
jle 0x4707f0
cmp ecx, 0x41
jl 0x4707eb
mov eax, ecx
cmp ecx, 0x5a
jle 0x4707f0
mov eax, 0x47
mov esi, dword [ebp - 0x54]
mov ecx, esi
push ebx
mov byte [ebp - 0x11], al
mov byte [ebp - 0x10], 0
call fcn.00494f80
push 0x5f
mov ecx, esi
call fcn.004952a0
lea eax, [ebp - 0x1c]
mov ecx, esi
push eax
call fcn.00494f80
pop esi
mov al, 1
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00622073
mov esp, ebp
pop ebp
ret
mov ecx, dword [ebp - 4]
xor al, al
pop esi
xor ecx, ebp
pop ebx
call fcn.00622073
mov esp, ebp
pop ebp
ret