Function at 0x409f20
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x228
mov eax, dword [0x448324]
mov dword [esp], eax
mov dword [esp + 0x1a8], 0x77760108
mov byte [esp + 0x1ac], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx + 0x1a8]
mov eax, edx
xor eax, 0x87fd27c2
mov ebx, ecx
and ebx, 0xa
sub ebx, eax
mov edi, ebx
and edi, esi
mov eax, edi
or eax, 0xfd
inc eax
mov ebp, edi
and ebp, 0x7d
imul ebp, eax
mov eax, edi
and eax, 2
or edi, 2
imul edi, eax
sub ebp, edi
add ebx, esi
add ebx, ebp
add bl, 0xca
mov byte [esp + edx + 0x1a8], bl
inc edx
add ecx, 2
cmp edx, 5
jne 0x409f50
mov ecx, dword [esp + 0x1a8]
mov dword [esp + 0x18], 0xf967fb65
mov dword [esp + 0x1c], 0xe507e726
mov dword [esp + 0x20], 0xe13ce339
mov dword [esp + 0x24], 0xed02ef32
mov dword [esp + 0x28], 0xe97eeb78
mov dword [esp + 0x2c], 0x97e8
mov byte [esp + 0x30], 0
mov edx, 0x2a
mov esi, 0xcb5637d4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + edx - 0x12]
lea edi, [edx - 0x65ab1bff]
lea eax, [esi + 0x34a9c840]
and eax, 0x34
and edi, 0x4b
or edi, eax
xor edi, 0xcb
or edi, ebx
lea eax, [esi + 0x34a9c900]
or eax, esi
and eax, ebx
xor eax, edi
mov bl, 0x28
sub bl, al
mov byte [esp + edx - 0x12], bl
inc edx
dec esi
cmp edx, 0x43
jne case.default.0x40a05b
lea edi, [esp + 0x18]
push ecx
push 0
push edi
call dword [esp + 0xc]
mov ecx, 0x448328
push eax
call fcn.00436f10
movzx eax, al
mov eax, dword [eax*4 + 0x441a48]
mov ecx, 0x616bdf1e
xor ecx, dword [0x441a50]
add eax, ecx
inc eax
jmp eax
mov ecx, dword [esp + 0x40]
or cl, al
mov dword [esp + 0x40], ecx
inc ebx
mov eax, dword [0x442f48]
nop
nop
nop
nop
nop
nop
nop
nop
jmp eax
add al, 0xae
push eax
push dword [esp + 0x60]
push dword [esp + 0x60]
call fcn.00418520
add esp, 0xc
movzx ecx, al
jmp dword [ecx*4 + 0x442f58]
and al, 0x8d
pop eax
das
inc esp
invalid
and al, 0x8d
pop eax
das
inc esp
add byte [ebx - 0x7fc3dbb4], cl
loope 0x417c19
or cl, byte [esi + ebp*4 + 8]
mov dword [esp + 0x3c], ecx
jmp 0x417bc8
dec esp
scasb al, byte es:[edi]
or byte [ecx - 0x14c3dbb4], cl
cmpsb byte [esi], byte es:[edi]
add eax, 0x22
push eax
call fcn.004081b0
add esp, 4
movzx ecx, word [esi]
test cx, cx
je 0x417c51
add esi, 2
nop
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [esi]
add esi, 2
test cx, cx
jne 0x417c40
mov word [eax], 0x5c
mov dword [esp], 0x31593f62
mov dword [esp + 4], 0x35bb3344
mov dword [esp + 8], 0x49443745
mov dword [esp + 0xc], 0x4d264b35
mov dword [esp + 0x10], 0x413f4f09
mov dword [esp + 0x14], 0x453f4331
mov dword [esp + 0x18], 0x5921473f
mov dword [esp + 0x1c], 0x5d5a5b2d
mov word [esp + 0x20], 0
xor ecx, ecx
nop
nop
movzx esi, byte [esp + ecx]
lea edi, [ecx + 0x35]
mov edx, 0xca
sub edx, ecx
xor edx, edi
and edx, esi
xor edx, edi
add dl, 0xf7
mov byte [esp + ecx], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0x22
jb 0x417ca0
add eax, 2
movzx ecx, word [esp]
test cx, cx
je 0x417cf1
lea edx, [esp + 2]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x417ce0
mov word [eax], 0
jmp 0x417d0f
mov word [eax], 0
xor edi, edi
mov ebp, esp
jmp dword [0x442f6c]
lea ebp, [esp + 2]
mov dword [esp], 0x3f973970
mov dword [esp + 4], 0x23b63dab
mov dword [esp + 8], 0x27b021b3
mov dword [esp + 0xc], 0x2b2a25bd
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
xor eax, eax
movzx ecx, byte [esp + eax]
lea edx, [eax + 0x2f03a0a]
mov esi, 0xd0fc5f5
sub esi, eax
and esi, 0xd0c817e
and edx, 0x2603001
or edx, esi
xor ecx, 0x5d9c8b7e
mov esi, ecx
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
mov edx, ecx
xor edx, 0x1eb12232
mov esi, ecx
or esi, 0x614eddcd
and esi, edx
lea edx, [ecx + esi*2]
and ecx, 0xe14e9dcd
add ecx, ecx
sub ecx, edx
lea edx, [ecx*2 + 0x3d624466]
add ecx, 0x9eb12233
sub ecx, edx
inc cl
mov byte [esp + eax], cl
mov ecx, eax
not ecx
or ecx, 1
add ecx, eax
inc ecx
mov edx, ecx
and edx, 0xfffffffd
mov esi, ecx
and esi, 2
or ecx, 2
imul ecx, esi
xor esi, 2
imul esi, edx
lea edx, [eax + eax]
and edx, 2
neg edx
add eax, edx
inc eax
add eax, ecx
add eax, esi
cmp eax, 0x13
jb 0x417d40
mov ebx, esp
push ebx
push dword [esp + 0x60]
push dword [esp + 0x60]
call fcn.00413840
add esp, 0xc
mov dword [esp], 0xd765c91c
mov dword [esp + 4], 0xd37bd57f
mov dword [esp + 8], 0xdf3ed162
mov dword [esp + 0xc], 0xdb7bdd10
mov dword [esp + 0x10], 0xa707d964
mov word [esp + 0x14], 0xa5a4
mov byte [ebp + 0x16], 0
mov word [ebp + 0x14], 0
mov ecx, dword [esp + 0x40]
mov ah, cl
and ah, 1
xor ecx, ecx
mov edx, ecx
add dl, 0xae
xor dl, byte [esp + ecx]
add dl, 0x9a
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0x19
jne 0x417e30
or ah, al
mov byte [esp + 0x34], ah
push ebx
push dword [esp + 0x60]
push dword [esp + 0x60]
call fcn.00413840
add esp, 0xc
movzx esi, al
movzx eax, byte [esp + 0x34]
mov ecx, esi
not ecx
xor esi, eax
add esi, eax
mov dword [esp], 0xff6df934
mov dword [esp + 4], 0xe30bfd17
mov dword [esp + 8], 0xe7c6e172
mov dword [esp + 0xc], 0xeb0be520
mov dword [esp + 0x10], 0xef0fe97c
mov dword [esp + 0x14], 0x9358edcc
mov dword [esp + 0x18], 0x97009103
mov dword [esp + 0x1c], 0x9b5b95b4
mov dword [esp + 0x20], 0x9f79997f
mov dword [esp + 0x24], 0x83179d0f
mov dword [esp + 0x28], 0x87128112
mov word [esp + 0x2c], 0x8584
mov byte [ebp + 0x2e], 0
mov word [ebp + 0x2c], 0
and ecx, eax
mov dword [esp + 0x34], ecx
mov eax, 0x4aa2b1d5
nop
nop
movzx edx, byte [ebx]
mov ecx, eax
or ecx, edx
lea edi, [eax - 0x4aa2b100]
and edi, edx
not ecx
or ecx, edi
mov edx, ecx
not edx
mov edi, ecx
and edi, 0x2d
xor ecx, 0x2c
lea ecx, [ecx + edi*2]
or ecx, 1
and edx, 1
add edx, ecx
mov byte [ebx], dl
inc ebx
dec eax
cmp eax, 0x4aa2b1a4
jne 0x417ee0
mov eax, esp
push eax
push dword [esp + 0x60]
push dword [esp + 0x60]
call fcn.00413840
add esp, 0xc
mov byte [esp + 0x3b], al
mov dword [esp], 0x13ff11ef
mov dword [esp + 4], 0x1f3e1dfe
mov dword [esp + 8], 0x1bfb19d4
mov dword [esp + 0xc], 0x7e70598
mov word [esp + 0x10], 0x100
mov byte [ebp + 0x12], 0
mov word [ebp + 0x10], 0
xor ecx, ecx
mov eax, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, eax
or edx, 0x1a13c644
add edx, ecx
inc edx
mov ebx, edx
and ebx, 2
mov edi, edx
or edx, 2
imul edx, ebx
xor ebx, 2
and edi, 0xfffffffd
imul edi, ebx
mov ebx, ecx
xor ebx, 0x1a13c644
add ebx, edx
movzx edx, byte [esp + ecx]
add ebx, edi
mov edi, ebx
and edi, edx
add ebx, edx
add edi, edi
sub ebx, edi
add bl, 0xac
mov byte [esp + ecx], bl
inc ecx
dec eax
cmp ecx, 0x15
jne 0x417f70
mov eax, esp
push eax
mov edi, dword [esp + 0x60]
push edi
push dword [esp + 0x60]
call fcn.00413840
add esp, 0xc
mov byte [esp + 0x3a], al
mov ebx, dword [edi + 4]
mov ecx, 0xfffffffe
nop
nop
nop
nop
nop
nop
nop
nop
cmp word [ebx + ecx + 2], 0
lea ecx, [ecx + 2]
jne 0x417fe0
cmp esi, dword [esp + 0x34]
setne byte [esp + 0x34]
mov eax, ecx
sar eax, 1
and ecx, 0x22
xor eax, 0x11
add eax, ecx
jns 0x418010
mov eax, 0xffffffff
jmp 0x418012
add eax, eax
push eax
call fcn.004081b0
add esp, 4
mov esi, eax
movzx ecx, word [ebx]
test cx, cx
je 0x418041
add ebx, 2
mov eax, esi
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebx]
add ebx, 2
test cx, cx
jne 0x418030
movzx ecx, byte [esp + 0x3b]
or cl, byte [esp + 0x3a]
or byte [esp + 0x34], cl
mov word [eax], 0x5c
mov dword [esp], 0x31593f62
mov dword [esp + 4], 0x35bb3344
mov dword [esp + 8], 0x49443745
mov dword [esp + 0xc], 0x4d264b35
mov dword [esp + 0x10], 0x413f4f09
mov dword [esp + 0x14], 0x453f4331
mov dword [esp + 0x18], 0x5921473f
mov dword [esp + 0x1c], 0x5d5a5b2d
mov word [esp + 0x20], 0
xor ecx, ecx
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx]
lea ebx, [ecx + 0x35]
mov edx, 0xca
sub edx, ecx
xor edx, ebx
and edx, edi
xor edx, ebx
add dl, 0xf7
mov byte [esp + ecx], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0x22
jb 0x4180a0
add eax, 2
movzx ecx, word [esp]
test cx, cx
je 0x417d00
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [ebp]
add ebp, 2
test cx, cx
jne 0x4180e0
jmp 0x417d00