Function at 0x40481f
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x48
push ebp
mov ebp, ecx
xor eax, eax
push esi
mov esi, dword [esp + 0x54]
push edi
mov edi, dword [ebp + 8]
shl edi, 2
mov dword [esp + 0x10], edi
mov dword [esp + 0xc], eax
test esi, esi
jle 0x404a54
push ebx
mov ebx, dword [esp + 0x60]
mov eax, dword [ebp + 0x10]
dec eax
cmp eax, 9
ja case.default.0x404855
jmp dword [eax*4 + 0x404a5f]
push ebx
push esi
mov ecx, ebp
call fcn.0040427b
xor esi, esi
jmp 0x404a3b
push ebx
push ebx
mov ecx, ebp
call fcn.004047e6
mov eax, dword [esp + 0x10]
jmp 0x404a3f
cmp esi, 0x20
jg case.0x404855.2
push 8
pop ecx
xor eax, eax
lea edi, [esp + 0x38]
push esi
rep stosd dword es:[edi], eax
lea eax, [esp + 0x3c]
push ebx
push eax
call fcn.0042aa50
mov edi, dword [esp + 0x20]
lea eax, [esp + 0x44]
push eax
push eax
lea eax, [ebp + 0x11c]
push eax
push edi
call fcn.004058ad
add esp, 0x1c
lea eax, [esp + 0x38]
mov ecx, ebp
push eax
push eax
call fcn.004047e6
lea eax, [esp + 0x48]
push eax
push eax
lea eax, [esp + 0x40]
push eax
push edi
call fcn.004058ad
add esp, 0x10
lea eax, [esp + 0x48]
mov ecx, ebp
push ebx
push eax
call fcn.004047e6
lea eax, [esi - 0x10]
push eax
lea eax, [esp + 0x3c]
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.0042aa50
add esp, 0xc
xor esi, esi
jmp 0x404875
push ebx
push ebx
lea esi, [ebp + 0x11c]
push esi
push edi
call fcn.004058ad
add esp, 0x10
mov ecx, ebp
push ebx
push ebx
call fcn.004047e6
push edi
push ebx
push esi
call fcn.0042aa50
add esp, 0xc
mov esi, dword [esp + 0x5c]
jmp 0x404875
lea esi, [ebp + 0x11c]
mov ecx, ebp
push esi
push esi
call fcn.004047e6
push ebx
push ebx
push esi
push edi
call fcn.004058ad
add esp, 0x10
jmp 0x404924
lea edi, [ebp + 0x11c]
mov ecx, ebp
push edi
push edi
call fcn.004047e6
push ebx
push ebx
push edi
push dword [esp + 0x20]
call fcn.004058ad
mov esi, ebx
add esp, 0x10
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov esi, dword [esp + 0x5c]
mov edi, dword [esp + 0x14]
jmp 0x404875
test esi, esi
jle 0x4048f7
dec esi
mov edi, ebx
shr esi, 3
lea ebx, [ebp + 0x11c]
inc esi
lea eax, [esp + 0x18]
mov ecx, ebp
push eax
push ebx
call fcn.004047e6
push ebx
push 8
mov ecx, ebp
call fcn.00405648
push edi
push edi
lea eax, [esp + 0x20]
push eax
push 8
call fcn.004058ad
mov eax, dword [edi]
add esp, 0x10
mov dword [ebp + 0x124], eax
mov eax, dword [edi + 4]
add edi, 8
mov dword [ebp + 0x128], eax
sub esi, 1
jne 0x404990
mov ebx, dword [esp + 0x60]
mov edi, dword [esp + 0x14]
jmp 0x4048f7
and dword [esp + 0x5c], 0
test esi, esi
jle 0x4048f7
mov edi, dword [esp + 0x5c]
lea eax, [ebp + 0x11c]
lea ecx, [esp + 0x28]
push ecx
push eax
mov ecx, ebp
call fcn.004047e6
mov al, byte [esp + 0x28]
mov ecx, ebp
xor byte [edi + ebx], al
lea eax, [ebp + 0x11c]
push eax
push 1
call fcn.00405648
mov al, byte [edi + ebx]
inc edi
mov byte [ebp + 0x12b], al
lea eax, [ebp + 0x11c]
cmp edi, esi
jl 0x4049f5
jmp 0x4049d5
mov eax, 0x527
jmp 0x404a3b
mov eax, 0x425
mov dword [esp + 0x10], eax
sub esi, edi
add ebx, edi
mov dword [esp + 0x5c], esi
mov dword [esp + 0x60], ebx
test esi, esi
jg 0x404848
pop ebx
pop edi
pop esi
pop ebp
add esp, 0x48
ret 8