Function at 0x407d50
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc4
mov eax, dword [0x5ed284]
xor eax, esp
mov dword [esp + 0xc0], eax
push ebx
mov ebx, dword [esp + 0xcc]
test bl, bl
jns 0x407f33
push esi
mov esi, dword [esp + 0xd4]
mov eax, esi
mov ecx, esi
shl ecx, 0x10
and eax, 0xff00
or eax, ecx
mov ecx, esi
shr esi, 0x10
and ecx, 0xff0000
or ecx, esi
mov esi, ebx
and esi, 0xf
xor edx, edx
shl eax, 8
shr ecx, 8
cmp esi, 3
ja case.default.0x407dae
push edi
jmp dword [esi*4 + 0x408088]
mov edi, 0x20
lea ebx, [ebx]
mov esi, eax
shr esi, 0xd
and esi, 1
mov ebx, esi
xor esi, ecx
shr eax, 1
shl ebx, 0x1f
shr edx, 1
shl esi, 0x1f
or esi, eax
or edx, ebx
shr ecx, 1
sub edi, 1
mov eax, esi
jne 0x407dc0
movzx eax, dh
mov ah, dl
pop edi
and edx, 0xffff0000
pop esi
pop ebx
or eax, edx
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.0052bfb9
add esp, 0xc4
ret
mov esi, 0x20
lea ecx, [ecx]
mov edi, eax
and edi, 0xffff0000
shl edi, 0xf
shr edx, 1
or edx, edi
mov edi, eax
shl edi, 8
xor edi, eax
mov ebx, ecx
and edi, 0xfff00000
shl ebx, 0x14
xor edi, ebx
shl edi, 0xb
shr eax, 1
or eax, edi
shr ecx, 1
sub esi, 1
jne 0x407e10
movzx eax, dh
mov ah, dl
pop edi
and edx, 0xffff0000
pop esi
pop ebx
or eax, edx
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.0052bfb9
add esp, 0xc4
ret
mov edi, 0x20
jmp 0x407e70
mov esi, ecx
and esi, 1
mov ebx, esi
shl ebx, 0x13
xor ebx, eax
and ebx, 0xfff80000
shl ebx, 0xc
shr edx, 1
or edx, ebx
mov ebx, eax
shl ebx, 0xf
xor ebx, eax
and ebx, 0xff800000
shl esi, 0x17
xor ebx, esi
shl ebx, 8
shr eax, 1
or eax, ebx
shr ecx, 1
sub edi, 1
jne 0x407e70
movzx eax, dh
mov ah, dl
pop edi
and edx, 0xffff0000
pop esi
pop ebx
or eax, edx
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.0052bfb9
add esp, 0xc4
ret
mov esi, 0x20
mov edi, ecx
shl edi, 0xb
xor edi, eax
shl edi, 5
xor edi, eax
and edi, 0xffff0000
shl edi, 0xf
shr edx, 1
or edx, edi
mov edi, eax
shl edi, 0x12
xor edi, eax
mov ebx, ecx
and edi, 0xfe000000
shl ebx, 0x19
xor edi, ebx
shl edi, 6
shr eax, 1
or eax, edi
shr ecx, 1
sub esi, 1
jne 0x407ed3
pop edi
movzx eax, dh
mov ah, dl
and edx, 0xffff0000
pop esi
pop ebx
or eax, edx
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.0052bfb9
add esp, 0xc4
ret
lea edx, [esp + 0xb4]
push edx
lea eax, [esp + 8]
push eax
mov byte [esp + 0xbc], 0x29
mov byte [esp + 0xbd], 0x56
mov byte [esp + 0xbe], 0xb2
mov byte [esp + 0xbf], 0x39
mov byte [esp + 0xc0], 0xa0
mov byte [esp + 0xc1], 0xce
mov byte [esp + 0xc2], 0xeb
mov byte [esp + 0xc3], 0x87
mov byte [esp + 0xc4], 0x52
mov byte [esp + 0xc5], 0xb4
mov byte [esp + 0xc6], 0x76
mov byte [esp + 0xc7], 0xfb
mov byte [esp + 0xc8], 0xc
mov byte [esp + 0xc9], 0x94
mov byte [esp + 0xca], 0x37
mov byte [esp + 0xcb], 0x71
call fcn.004168c0
mov eax, dword [esp + 0xd8]
mov ecx, eax
mov edx, eax
mov byte [esp + 0xbc], al
shr eax, 0x18
mov byte [esp + 0xbf], al
shr ecx, 8
movzx eax, bl
mov byte [esp + 0xbd], cl
mov cl, al
mov ch, cl
shr edx, 0x10
mov byte [esp + 0xbe], dl
lea edx, [esp + 0xbc]
push edx
mov eax, ecx
shl eax, 0x10
mov ax, cx
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], eax
lea eax, [esp + 0x10]
push eax
call fcn.00416a00
lea ecx, [esp + 0xc4]
push ecx
lea edx, [esp + 0x18]
push edx
call fcn.004168c0
movzx eax, byte [esp + 0xcf]
movzx ecx, byte [esp + 0xce]
movzx edx, byte [esp + 0xcd]
shl eax, 8
or eax, ecx
movzx ecx, byte [esp + 0xcc]
shl eax, 8
or eax, edx
shl eax, 8
add esp, 0x18
or eax, ecx
mov ecx, dword [esp + 0xc4]
pop ebx
xor ecx, esp
call fcn.0052bfb9
add esp, 0xc4
ret