Function at 0x4044a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0xbc]
sub esp, 0x13c
mov eax, dword [0x419060]
xor eax, ebp
mov dword [ebp + 0xb8], eax
mov eax, dword [ebp + 0xc4]
mov ecx, dword [eax + 0x16]
movzx eax, word [eax + 8]
push ebx
xor ebx, ebx
push esi
mov esi, dword [0x5ee2cc]
dec eax
push edi
mov edi, dword [0x5ee2d4]
mov dword [ebp - 0x54], ebx
mov dword [ebp - 0x58], ebx
mov dword [ebp - 0x80], ebx
mov dword [ebp - 0x74], ebx
mov dword [ebp - 0x60], ecx
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x5c], 1
mov dword [ebp - 0x64], 0xffffffff
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x7c], eax
mov dword [ebp - 0x78], 0xff
mov dword [ebp - 0x68], 0x5f62a0
mov edi, edi
cmp ebx, 6
jge 0x40458d
cmp ebx, 0x18
jg 0x40458d
lea ebx, [ebx]
cmp edi, dword [0x5ee2d0]
jae 0x404531
mov al, byte [edi + 0x5ee2d8]
inc edi
jmp 0x404576
cmp esi, 8
jb 0x4045e1
mov esi, 8
mov edx, dword [0x5ee2bc]
sub dword [0x5ee2cc], esi
push esi
push edx
push 0x5ee2d8
mov edi, 1
mov dword [0x5ee2d0], esi
call fcn.0040cb60
mov al, byte [0x5ee2d8]
add esp, 0xc
add dword [0x5ee2bc], esi
mov esi, dword [0x5ee2cc]
movzx eax, al
cmp eax, 0xffffffff
je 0x40458d
mov ecx, ebx
shl eax, cl
add ebx, 8
or dword [ebp - 0x4c], eax
cmp ebx, 0x18
jle 0x404520
mov eax, dword [ebp - 0x4c]
mov ecx, dword [ebp - 0x78]
mov dl, al
and dl, 0x3f
shr eax, 6
lea ecx, [ebp + ecx - 0x48]
sub ebx, 6
mov byte [ecx], dl
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x70], 0
test dl, dl
jbe 0x40466b
mov al, dl
mov byte [ebp - 0x69], al
jmp 0x4045c0
cmp ebx, 8
jge 0x404649
cmp ebx, 0x18
jg 0x404649
mov edi, edi
cmp edi, dword [0x5ee2d0]
jae 0x4045ed
mov al, byte [edi + 0x5ee2d8]
inc edi
jmp 0x404632
test esi, esi
jne 0x40453f
xor al, al
jmp 0x404576
cmp esi, 8
jb 0x4046c3
mov esi, 8
mov ecx, dword [0x5ee2bc]
sub dword [0x5ee2cc], esi
push esi
push ecx
push 0x5ee2d8
mov edi, 1
mov dword [0x5ee2d0], esi
call fcn.0040cb60
mov al, byte [0x5ee2d8]
add esp, 0xc
add dword [0x5ee2bc], esi
mov esi, dword [0x5ee2cc]
movzx eax, al
cmp eax, 0xffffffff
je 0x404649
mov ecx, ebx
shl eax, cl
add ebx, 8
or dword [ebp - 0x4c], eax
cmp ebx, 0x18
jle 0x4045d0
mov ecx, dword [ebp - 0x4c]
mov eax, dword [ebp - 0x70]
mov edx, dword [ebp - 0x68]
mov byte [edx + eax], cl
inc eax
shr ecx, 8
sub ebx, 8
mov dword [ebp - 0x4c], ecx
mov dword [ebp - 0x70], eax
cmp al, byte [ebp - 0x69]
jb 0x4045c0
mov eax, dword [ebp - 0x68]
dec dword [ebp - 0x78]
sub eax, 0x40
cmp eax, 0x5f22e0
mov dword [ebp - 0x68], eax
jge 0x404510
cmp dword [ebp - 0x60], 0
mov dword [0x5ee2d4], edi
jle 0x404bc8
mov eax, dword [ebp - 0x54]
cmp byte [ebp + eax - 0x48], 0
jne 0x40474e
cmp ebx, 8
jge 0x40472f
cmp ebx, 0x18
jg 0x40472f
cmp edi, dword [0x5ee2d0]
jae 0x4046d2
mov al, byte [edi + 0x5ee2d8]
inc edi
jmp 0x404712
test esi, esi
jne 0x4045fb
xor al, al
jmp 0x404632
cmp esi, 8
jb 0x404746
mov esi, 8
mov eax, dword [0x5ee2bc]
sub dword [0x5ee2cc], esi
push esi
push eax
push 0x5ee2d8
mov edi, 1
mov dword [0x5ee2d0], esi
call fcn.0040cb60
mov al, byte [0x5ee2d8]
add esp, 0xc
add dword [0x5ee2bc], esi
mov esi, dword [0x5ee2cc]
movzx eax, al
cmp eax, 0xffffffff
je 0x404729
mov ecx, ebx
shl eax, cl
add ebx, 8
or dword [ebp - 0x4c], eax
cmp ebx, 0x18
jle 0x4046b2
mov dword [0x5ee2d4], edi
mov eax, dword [ebp - 0x4c]
movzx ecx, al
shr eax, 8
mov dword [ebp - 0x54], ecx
mov dword [ebp - 0x4c], eax
sub ebx, 8
jmp 0x40494a
test esi, esi
jne 0x4046dc
xor al, al
jmp 0x404712
cmp ebx, 1
jge 0x4047cb
cmp ebx, 0x18
jg 0x4047cb
cmp edi, dword [0x5ee2d0]
jae 0x404769
mov al, byte [edi + 0x5ee2d8]
inc edi
jmp 0x4047ae
cmp esi, 8
jb 0x404805
mov esi, 8
mov edx, dword [0x5ee2bc]
sub dword [0x5ee2cc], esi
push esi
push edx
push 0x5ee2d8
mov edi, 1
mov dword [0x5ee2d0], esi
call fcn.0040cb60
mov al, byte [0x5ee2d8]
add esp, 0xc
add dword [0x5ee2bc], esi
mov esi, dword [0x5ee2cc]
movzx eax, al
cmp eax, 0xffffffff
je 0x4047c5
mov ecx, ebx
shl eax, cl
add ebx, 8
or dword [ebp - 0x4c], eax
cmp ebx, 0x18
jle 0x404758
mov dword [0x5ee2d4], edi
mov ecx, dword [ebp - 0x4c]
mov eax, ecx
and eax, 1
shr ecx, 1
dec ebx
mov dword [ebp - 0x4c], ecx
test ax, ax
je 0x404879
cmp ebx, 8
jge 0x40472f
cmp ebx, 0x18
jg 0x40472f
cmp edi, dword [0x5ee2d0]
jae 0x404811
mov al, byte [edi + 0x5ee2d8]
inc edi
jmp 0x404851
test esi, esi
jne 0x404777
xor al, al
jmp 0x4047ae
cmp esi, 8
jb 0x404871
mov esi, 8
mov eax, dword [0x5ee2bc]
sub dword [0x5ee2cc], esi
push esi
push eax
push 0x5ee2d8
mov edi, 1
mov dword [0x5ee2d0], esi
call fcn.0040cb60
mov al, byte [0x5ee2d8]
add esp, 0xc
add dword [0x5ee2bc], esi
mov esi, dword [0x5ee2cc]
movzx eax, al
cmp eax, 0xffffffff
je 0x404729
mov ecx, ebx
shl eax, cl
add ebx, 8
or dword [ebp - 0x4c], eax
cmp ebx, 0x18
jle 0x4047f4
jmp 0x404729
test esi, esi
jne 0x40481b
xor al, al
jmp 0x404851
mov edx, dword [ebp - 0x54]
movzx eax, byte [ebp + edx - 0x48]
movzx edx, word [eax*2 + 0x416e38]
cmp edx, ebx
mov dword [ebp - 0x70], edx
jle 0x404916
cmp ebx, 0x18
jg 0x404916
lea ecx, [ecx]
cmp edi, dword [0x5ee2d0]
jae 0x4048b1
mov al, byte [edi + 0x5ee2d8]
inc edi
jmp 0x4048f9
mov esi, dword [0x5ee2cc]
cmp esi, 8
jb 0x404961
mov esi, 8
mov ecx, dword [0x5ee2bc]
sub dword [0x5ee2cc], esi
push esi
push ecx
push 0x5ee2d8
mov edi, 1
mov dword [0x5ee2d0], esi
call fcn.0040cb60
mov al, byte [0x5ee2d8]
mov edx, dword [ebp - 0x70]
add esp, 0xc
add dword [0x5ee2bc], esi
movzx eax, al
cmp eax, 0xffffffff
je 0x404910
mov ecx, ebx
shl eax, cl
add ebx, 8
or dword [ebp - 0x4c], eax
cmp ebx, 0x18
jle 0x4048a0
mov dword [0x5ee2d4], edi
mov ax, word [edx*2 + 0x416ca8]
and ax, word [ebp - 0x4c]
mov ecx, edx
shr dword [ebp - 0x4c], cl
movzx esi, ax
mov eax, dword [ebp - 0x54]
movzx ecx, si
mov esi, dword [0x5ee2cc]
sub ebx, edx
shl eax, 6
movzx dx, byte [eax + ecx + 0x5f22e0]
movzx eax, dx
mov dword [ebp - 0x54], eax
movzx eax, word [ebp - 0x58]
mov dword [ebp - 0x68], ebx
cmp eax, 3
ja case.default.0x40495a
jmp dword [eax*4 + 0x404c4c]
test esi, esi
jne 0x4048c5
xor al, al
jmp 0x4048f9
mov ecx, dword [ebp - 0x54]
mov edx, 0x90
cmp cx, dx
je 0x4049b7
mov eax, dword [ebp - 0x50]
dec dword [ebp - 0x60]
mov byte [eax + 0x5ee2e0], cl
inc eax
mov dword [ebp - 0x50], eax
cmp eax, 0x4000
jne case.default.0x40495a
push eax
mov eax, dword [ebp - 0x64]
push 0x5ee2e0
push eax
call fcn.00403ef0
add esp, 0xc
mov dword [ebp - 0x64], eax
xor eax, eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x50], eax
jmp 0x404bab
mov dword [ebp - 0x58], 1
jmp case.default.0x40495a
mov ecx, dword [ebp - 0x54]
test cx, cx
je 0x4049f9
mov eax, dword [ebp - 0x7c]
movzx eax, word [eax*2 + 0x416e14]
movzx edx, cx
mov dword [ebp - 0x80], edx
mov edx, eax
and edx, ecx
movzx ecx, dx
xor edx, edx
cmp cx, ax
setne dl
mov dword [ebp - 0x74], ecx
add edx, 2
mov dword [ebp - 0x58], edx
jmp case.default.0x40495a
mov eax, dword [ebp - 0x50]
dec dword [ebp - 0x60]
mov byte [eax + 0x5ee2e0], 0x90
inc eax
mov dword [ebp - 0x50], eax
cmp eax, 0x4000
jne 0x404a3a
push eax
mov eax, dword [ebp - 0x64]
push 0x5ee2e0
push eax
call fcn.00403ef0
mov edi, dword [0x5ee2d4]
mov esi, dword [0x5ee2cc]
add esp, 0xc
mov dword [ebp - 0x64], eax
xor eax, eax
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x50], eax
mov dword [ebp - 0x58], 0
jmp case.default.0x40495a
mov ecx, dword [ebp - 0x54]
add dword [ebp - 0x74], ecx
mov dword [ebp - 0x58], 3
jmp case.default.0x40495a
mov eax, dword [ebp - 0x7c]
mov cl, byte [eax*2 + 0x416e20]
movzx edx, word [ebp - 0x80]
movzx eax, word [eax*2 + 0x416e2c]
movzx ebx, word [ebp - 0x74]
shr edx, cl
movzx ecx, word [ebp - 0x54]
and edx, eax
mov eax, dword [ebp - 0x50]
shl edx, 8
mov edi, eax
sub edi, edx
sub edi, ecx
add ebx, 3
dec edi
sub dword [ebp - 0x60], ebx
lea ecx, [ecx]
and edi, 0x3fff
mov ecx, edi
cmp edi, eax
ja 0x404a9e
mov ecx, eax
mov esi, 0x4000
sub esi, ecx
cmp esi, ebx
jbe 0x404aab
mov esi, ebx
sub ebx, esi
cmp dword [ebp - 0x5c], 0
mov dword [ebp - 0x70], ebx
je 0x404ace
cmp eax, edi
ja 0x404ace
mov edx, dword [ebp - 0x50]
push esi
lea eax, [edx + 0x5ee2e0]
push 0
push eax
call fcn.00410d00
jmp 0x404b0f
mov ecx, eax
sub ecx, edi
cmp ecx, esi
jae 0x404af8
jmp 0x404ae0
mov dl, byte [edi + 0x5ee2e0]
mov byte [eax + 0x5ee2e0], dl
inc eax
inc edi
sub esi, 1
jne 0x404ae0
mov dword [ebp - 0x50], eax
jmp 0x404b1a
mov ecx, dword [ebp - 0x50]
push esi
lea eax, [edi + 0x5ee2e0]
push eax
lea edx, [ecx + 0x5ee2e0]
push edx
call fcn.0040cb60
add dword [ebp - 0x50], esi
mov eax, dword [ebp - 0x50]
add esp, 0xc
add edi, esi
cmp eax, 0x4000
jne 0x404b9d
mov ebx, dword [0x5f6314]
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x58], eax
test ebx, ebx
je 0x404b67
mov esi, ebx
cmp ebx, 0x4000
jb 0x404b44
mov esi, 0x4000
mov ecx, dword [0x5f6318]
push esi
push 0x5ee2e0
push ecx
call fcn.0040cb60
sub ebx, esi
add esp, 0xc
add dword [0x5f6318], esi
mov dword [0x5f6314], ebx
mov ecx, dword [ebp - 0x50]
jcxz 0x404b8c
mov esi, 0x5ee2e0
mov ebx, dword [ebp - 0x58]
lodsb al, byte [esi]
xor al, bl
and eax, 0xff
shr ebx, 8
xor ebx, dword [eax*4 + 0x5f6320]
loop 0x404b75
mov dword [ebp - 0x58], ebx
mov edx, dword [ebp - 0x58]
mov ebx, dword [ebp - 0x70]
xor eax, eax
mov dword [ebp - 0x64], edx
mov dword [ebp - 0x5c], eax
mov dword [ebp - 0x50], eax
test ebx, ebx
jne 0x404a90
mov dword [ebp - 0x58], ebx
mov ebx, dword [ebp - 0x68]
mov esi, dword [0x5ee2cc]
mov edi, dword [0x5ee2d4]
cmp dword [ebp - 0x60], 0
movzx eax, word [ebp - 0x54]
mov dword [ebp - 0x54], eax
jg 0x404695
mov edi, dword [0x5f6314]
mov eax, dword [ebp - 0x64]
mov dword [ebp - 0x5c], eax
test edi, edi
je 0x404c0a
mov esi, dword [ebp - 0x50]
cmp edi, esi
jae 0x404be1
mov esi, edi
test esi, esi
je 0x404c0a
mov ebx, dword [0x5f6318]
push esi
push 0x5ee2e0
push ebx
call fcn.0040cb60
sub edi, esi
add esp, 0xc
add ebx, esi
mov dword [0x5f6314], edi
mov dword [0x5f6318], ebx
mov ecx, dword [ebp - 0x50]
jcxz 0x404c2f
mov esi, 0x5ee2e0
mov ebx, dword [ebp - 0x5c]
lodsb al, byte [esi]
xor al, bl
and eax, 0xff
shr ebx, 8
xor ebx, dword [eax*4 + 0x5f6320]
loop 0x404c18
mov dword [ebp - 0x5c], ebx
mov ecx, dword [ebp + 0xb8]
mov eax, dword [ebp - 0x5c]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0040b281
add ebp, 0xbc
mov esp, ebp
pop ebp
ret