Function at 0x45e0a0
Capabilities:
Encode data using xor

Disassembly:
cmp dword [esp + 0x10], 0
mov eax, dword [esp + 4]
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [esp + 0xc]
push ebx
push ebp
push esi
push edi
je 0x45e0c0
mov esi, eax
mov dword [esp + 0x14], eax
jmp 0x45e0c7
lea esi, [eax + 0x48]
mov dword [esp + 0x14], esi
xor ecx, dword [esi]
add esi, 8
mov edi, 2
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [eax + ebx*4 + 0x490]
mov dword [esp + 0x1c], edx
mov ebp, ecx
shr ebp, 0x18
add ebx, dword [eax + ebp*4 + 0x90]
mov edx, ecx
shr edx, 8
movzx ebp, dl
xor ebx, dword [eax + ebp*4 + 0x890]
mov edx, dword [esp + 0x1c]
movzx ebp, cl
add ebx, dword [eax + ebp*4 + 0xc90]
mov dword [esp + 0x1c], ecx
xor ebx, dword [esi - 4]
xor edx, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [eax + ebx*4 + 0x490]
mov ebp, edx
shr ebp, 0x18
add ebx, dword [eax + ebp*4 + 0x90]
mov ecx, edx
shr ecx, 8
movzx ebp, cl
xor ebx, dword [eax + ebp*4 + 0x890]
mov ecx, dword [esp + 0x1c]
movzx ebp, dl
add ebx, dword [eax + ebp*4 + 0xc90]
mov dword [esp + 0x1c], edx
xor ebx, dword [esi]
xor ecx, ebx
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [eax + ebx*4 + 0x490]
mov ebp, ecx
shr ebp, 0x18
add ebx, dword [eax + ebp*4 + 0x90]
mov edx, ecx
shr edx, 8
movzx ebp, dl
xor ebx, dword [eax + ebp*4 + 0x890]
mov edx, dword [esp + 0x1c]
movzx ebp, cl
add ebx, dword [eax + ebp*4 + 0xc90]
mov dword [esp + 0x1c], ecx
xor ebx, dword [esi + 4]
xor edx, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [eax + ebx*4 + 0x490]
mov ebp, edx
shr ebp, 0x18
add ebx, dword [eax + ebp*4 + 0x90]
mov ecx, edx
shr ecx, 8
movzx ebp, cl
xor ebx, dword [eax + ebp*4 + 0x890]
mov ecx, dword [esp + 0x1c]
movzx ebp, dl
add ebx, dword [eax + ebp*4 + 0xc90]
mov dword [esp + 0x1c], edx
xor ebx, dword [esi + 8]
xor ecx, ebx
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [eax + ebx*4 + 0x490]
mov ebp, ecx
shr ebp, 0x18
add ebx, dword [eax + ebp*4 + 0x90]
mov edx, ecx
shr edx, 8
movzx ebp, dl
xor ebx, dword [eax + ebp*4 + 0x890]
movzx ebp, cl
add ebx, dword [eax + ebp*4 + 0xc90]
mov edx, dword [esp + 0x1c]
xor ebx, dword [esi + 0xc]
mov dword [esp + 0x1c], ecx
xor edx, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [eax + ebx*4 + 0x490]
mov ebp, edx
shr ebp, 0x18
add ebx, dword [eax + ebp*4 + 0x90]
mov ecx, edx
shr ecx, 8
movzx ebp, cl
xor ebx, dword [eax + ebp*4 + 0x890]
mov ecx, dword [esp + 0x1c]
movzx ebp, dl
add ebx, dword [eax + ebp*4 + 0xc90]
mov dword [esp + 0x1c], edx
xor ebx, dword [esi + 0x10]
add esi, 0x20
xor ecx, ebx
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [eax + ebx*4 + 0x490]
mov ebp, ecx
shr ebp, 0x18
add ebx, dword [eax + ebp*4 + 0x90]
mov edx, ecx
shr edx, 8
movzx ebp, dl
xor ebx, dword [eax + ebp*4 + 0x890]
mov edx, dword [esp + 0x1c]
movzx ebp, cl
add ebx, dword [eax + ebp*4 + 0xc90]
mov dword [esp + 0x1c], ecx
xor ebx, dword [esi - 0xc]
xor edx, ebx
mov ebx, edx
shr ebx, 0x10
movzx ebx, bl
mov ebx, dword [eax + ebx*4 + 0x490]
mov ebp, edx
shr ebp, 0x18
add ebx, dword [eax + ebp*4 + 0x90]
mov ecx, edx
shr ecx, 8
movzx ebp, cl
xor ebx, dword [eax + ebp*4 + 0x890]
mov ecx, dword [esp + 0x1c]
movzx ebp, dl
add ebx, dword [eax + ebp*4 + 0xc90]
xor ebx, dword [esi - 8]
xor ecx, ebx
sub edi, 1
jne 0x45e0d1
mov eax, dword [esp + 0x14]
mov esi, dword [eax + 0x44]
mov eax, dword [esp + 0x18]
xor esi, edx
pop edi
mov dword [eax], esi
pop esi
pop ebp
mov dword [eax + 4], ecx
pop ebx
ret