Function at 0x401845
Capabilities:
Encode data using xor

Disassembly:
inc dword [esp]
inc ebx
imul esi, edx, 0x73
pop eax
add ebx, edx
mov dword [0x4f3c28], ebx
mov bh, 8
push ebx
sub ebx, eax
and eax, 0xff
sub esi, ebx
sub ebx, edi
mov cl, byte [esp + eax + 0x18]
mov dword [0x4bb63a], esi
movzx edx, cl
mov esi, dword [0x4d2cf7]
dec esi
add edx, edi
add esi, edi
sub esi, dword [0x50ee93]
and edx, 0xff
mov edi, edx
sub dword [0x4eeee8], esi
mov dl, byte [esp + edi + 0x18]
dec ebx
mov byte [esp + eax + 0x18], dl
and esi, ebp
pop ebx
sub ebx, esi
dec ebp
mov byte [esp + edi + 0x14], cl
add dword [0x4c7cbe], esi
mov esi, eax
nop
jne 0x4019af
rol dword [eax + eax], 1
invalid
sub esi, ecx
mov ebp, dword [esp + 0x128]
sub ebx, eax
xor ebx, ecx
mov dword [0x4e917b], esi
mov bh, 0x69
inc esi
mov esi, edi
sub ebx, dword [0x4178fe]
sub ebx, esi
mov dword [0x4ce91f], ebx
mov edi, dword [esp + 0xc]
mov ebx, ecx
test ebp, ebp
jbe 0x4015b8
sub ebx, edi
sub ebx, eax
xor ebx, 0xfffffff3
lea eax, [eax + 1]
add dword [0x4b9482], ebx
mov ebx, dword [0x4925fe]
push ax
inc ebx
xor eax, eax
movsx ebx, ax
pop ax
sub ebx, edx
sub dword [0x508972], ebx
xor ah, ah
mov cl, byte [esp + eax + 0x14]
mov bl, 0x6d
movzx edx, cl
add ebx, eax
movzx ebx, cl
add edx, esi
movsx ebx, al
add dword [0x4f5d85], ebx
and edx, 0xff
mov ebx, ebp
mov esi, edx
movzx edx, byte [esp + esi + 0x14]
sub ebx, edi
mov byte [esp + eax + 0x14], dl
and ebx, eax
mov byte [esp + esi + 0x14], cl
movzx edx, byte [esp + eax + 0x14]
dec ebx
add edx, ecx
mov dword [0x4ed7ca], ebx
and edx, 0xff
mov ebx, dword [0x460bab]
movzx ecx, byte [esp + edx + 0x14]
add ebx, eax
xor byte [edi], cl
sub ebx, dword [0x4ff7ea]
add ebx, dword [0x44ff09]
inc edi
add dword [0x4ea5c5], ebx
mov ebx, dword [0x419264]
imul ebx, eax, 0xc
dec ebx
dec ebp
jne 0x401516
add ebx, dword [0x4edd88]
mov ecx, dword [esp + 0x114]
mov dword [0x4db016], ebx
lea ebx, [ecx + ecx]
pop esi
sub ebx, edi
pop ebp
movsx ebx, dl
inc ebx
pop edi
add dword [0x4f8b5f], ebx
mov ebx, esi
xor ebx, 0x2a
add ebx, ebp
add esp, 0x10c
ret
sub esp, 0x10c
sub dword [0x50b26e], edx
mov eax, dword [esp + 0x110]
mov edx, ebx
mov ecx, dword [esp + 0x120]
inc edx
mov dword [esp], eax
add edx, dword [0x5046e8]
mov dword [esp + 4], ecx
xor eax, eax
add ebx, edx
push eax
mov dword [0x509ac1], edx
push eax
mov byte [esp + eax + 0x10], al
mov ebx, dword [0x45639f]
add edx, ebx
inc eax
inc edx
add edx, esi
pop edx
mov dword [0x4ea935], edx
mov ebx, dword [0x45a073]
pop edx
cmp ah, 1
jne 0x401871
push edi
movzx ebx, cx
add ebx, eax
mov edi, dword [esp + 0x11c]
add edx, dword [0x4272f3]
add dword [0x4c5b62], ebx
push ebp
mov bl, 0x23
push esi
xor esi, esi
movsx ebx, al
sub edx, dword [0x4fc711]
xor eax, eax
xor ebp, ebp
add ebx, dword [0x4ce416]
mov dword [0x4cfaf1], esi
push ebx
xor ebx, ebx
sub esi, dword [0x46b4e1]
dec esi
mov cl, byte [esp + ebp + 0x18]
add esi, ebp
mov edx, dword [esp + 0x14]
sub dword [0x4dd951], esi
movzx edx, byte [edx + eax]
mov esi, dword [0x50c4d4]
dec esi
inc esi
add esi, edi
add ebx, ecx
mov dword [0x501572], esi
mov esi, dword [0x43d489]
add edx, ebx
movzx edx, dl
add esi, ecx
imul esi, edx, 0x37
sub esi, ecx
add dword [0x4f9a66], esi
inc eax
lea esi, [edx + eax*2]
sub esi, dword [0x413bcf]
mov ebx, edx
cmp eax, edi
jb 0x40193a
sub esi, eax
xor eax, eax
add esi, edi
mov dl, byte [esp + ebx + 0x18]
mov dword [0x501b97], esi
inc ebp
inc ebp
movzx esi, cl
add esi, eax
mov byte [esp + ebp + 0x16], dl
sub esi, edi
dec ebp
mov byte [esp + ebx + 0x18], cl
add dword [0x4f8e8c], esi
mov esi, dword [0x4c4252]
cmp ebp, 0x100
jb 0x4018e3
add esi, ebx
xor ebp, ebp
or esi, 0xffffff8e
inc esi
sub dword [0x4f125c], esi
lea esi, [eax + 0x11]
dec esi
sub esi, ebp
xor esi, eax
xor edi, edi
add dword [0x4fe33c], esi
lea esi, [eax + eax]
xor eax, eax
dec esi
pop ebx
add esi, dword [0x4316fb]
test ebp, ebp
jbe 0x4014de
sub esi, dword [0x498ecf]
mov dword [0x4d3151], ebx
lea esi, [ecx + edx]
push eax
jmp 0x401472