Function at 0x451a30
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x50
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
push ebx
push ebp
push esi
mov esi, eax
mov eax, dword [esp + 0x60]
cmp eax, 0x18
push edi
mov edi, 0x7f4a7c13
mov dword [esp + 0x10], eax
mov ebp, ecx
mov dword [esp + 0x24], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], edx
mov dword [esp + 0x28], edi
mov ebx, 0x9e3779b9
jb 0x451eb0
mov eax, 0xaaaaaaab
mul dword [esp + 0x64]
shr edx, 4
mov dword [esp + 0x68], edx
mov edi, edi
movzx eax, byte [esi + 0xf]
push 0
cdq
push 0x100
push edx
push eax
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0xe]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0xd]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0xc]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0xb]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0xa]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 9]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 8]
mov edi, edx
cdq
add ecx, eax
mov eax, dword [esp + 0x24]
adc edi, edx
add ebp, ecx
adc eax, edi
mov dword [esp + 0x24], eax
movzx eax, byte [esi + 0x17]
push 0
cdq
push 0x100
push edx
push eax
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0x16]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0x15]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0x14]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0x13]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0x12]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0x11]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 0x10]
mov edi, edx
cdq
add ecx, eax
adc edi, edx
mov edx, dword [esp + 0x28]
movzx eax, byte [esi + 7]
add edx, ecx
push 0
mov dword [esp + 0x2c], edx
cdq
push 0x100
push edx
push eax
adc ebx, edi
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 6]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 5]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 4]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 3]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 2]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi + 1]
mov edi, edx
cdq
push 0
add ecx, eax
push 0x100
adc edi, edx
push edi
push ecx
call fcn.007c5f30
mov ecx, eax
movzx eax, byte [esi]
mov edi, edx
cdq
add ecx, eax
adc edi, edx
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0x24]
sub ecx, eax
sbb edi, ebx
mov eax, dword [esp + 0x18]
sub ecx, ebp
sbb edi, edx
mov edx, dword [esp + 0x1c]
add ecx, eax
adc edi, edx
mov edx, ebx
shr edx, 0xb
xor ecx, edx
mov edx, dword [esp + 0x28]
xor eax, eax
xor edi, eax
mov eax, ebp
sub eax, edx
mov edx, dword [esp + 0x24]
sbb edx, ebx
sub eax, ecx
sbb edx, edi
mov dword [esp + 0x34], edx
mov edx, ecx
mov ebp, edi
shld ebp, edx, 9
shl edx, 9
xor eax, edx
mov edx, ebp
mov ebp, dword [esp + 0x34]
xor ebp, edx
mov edx, dword [esp + 0x28]
sub edx, eax
sbb ebx, ebp
sub edx, ecx
sbb ebx, edi
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x24], ebp
mov ebx, eax
shrd ebx, ebp, 8
xor edx, ebx
mov ebx, dword [esp + 0x3c]
shr ebp, 8
xor ebx, ebp
mov ebp, dword [esp + 0x24]
mov dword [esp + 0x2c], ebx
sub ecx, edx
sbb edi, ebx
sub ecx, eax
sbb edi, ebp
shr ebx, 6
xor ecx, ebx
mov ebx, dword [esp + 0x24]
xor ebp, ebp
xor edi, ebp
mov ebp, dword [esp + 0x2c]
sub eax, edx
sbb ebx, ebp
sub eax, ecx
sbb ebx, edi
mov dword [esp + 0x44], ebx
mov ebx, ecx
mov ebp, edi
shld ebp, ebx, 0x17
shl ebx, 0x17
xor eax, ebx
mov ebx, ebp
mov ebp, dword [esp + 0x44]
xor ebp, ebx
mov ebx, dword [esp + 0x2c]
sub edx, eax
sbb ebx, ebp
sub edx, ecx
sbb ebx, edi
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x24], ebp
mov ebx, eax
shrd ebx, ebp, 5
shr ebp, 5
xor edx, ebx
mov ebx, dword [esp + 0x4c]
xor ebx, ebp
sub ecx, edx
sbb edi, ebx
sub ecx, eax
mov dword [esp + 0x28], edx
sbb edi, dword [esp + 0x24]
xor ebp, ebp
xor edi, ebp
mov ebp, dword [esp + 0x24]
mov edx, ebx
shr edx, 3
xor ecx, edx
mov edx, dword [esp + 0x28]
sub eax, edx
sbb ebp, ebx
sub eax, ecx
sbb ebp, edi
mov dword [esp + 0x1c], edi
xor edi, edi
xor eax, edi
mov dword [esp + 0x54], ebp
mov edi, ebp
mov ebp, ecx
shl ebp, 0x11
xor edi, ebp
mov ebp, dword [esp + 0x1c]
sub edx, eax
sbb ebx, edi
sub edx, ecx
sbb ebx, ebp
mov dword [esp + 0x24], edi
mov ebp, eax
shrd ebp, edi, 0xb
shr edi, 0xb
xor ebx, edi
mov edi, dword [esp + 0x1c]
xor edx, ebp
mov ebp, dword [esp + 0x24]
sub ecx, edx
sbb edi, ebx
sub ecx, eax
sbb edi, ebp
mov dword [esp + 0x5c], edi
mov edi, edx
mov ebp, ebx
shrd edi, ebp, 0xc
xor ecx, edi
shr ebp, 0xc
mov edi, ebp
mov ebp, dword [esp + 0x5c]
xor ebp, edi
mov edi, dword [esp + 0x24]
sub eax, edx
sbb edi, ebx
sub eax, ecx
sbb edi, ebp
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], ebp
shld ebp, ecx, 0x12
shl ecx, 0x12
xor eax, ecx
mov ecx, dword [esp + 0x18]
xor edi, ebp
mov ebp, eax
mov eax, dword [esp + 0x1c]
sub edx, ebp
sbb ebx, edi
sub edx, ecx
sbb ebx, eax
mov dword [esp + 0x24], edi
mov eax, ebp
shrd eax, edi, 0x16
shr edi, 0x16
xor edx, eax
xor ebx, edi
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x68]
sub ecx, 0x18
add esi, 0x18
dec eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x10], ecx
mov dword [esp + 0x68], eax
jne 0x451a80
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x64]
mov edi, edx
mov edx, dword [esp + 0x1c]
add edi, eax
mov eax, dword [esp + 0x10]
adc ebx, 0
dec eax
cmp eax, 0x16
ja case.default.0x451ec3
jmp dword [eax*4 + 0x452290]
movzx eax, byte [esi + 0x16]
push 0x1000000
cdq
push 0
push edx
push eax
call fcn.007c5f30
add edi, eax
adc ebx, edx
movzx eax, byte [esi + 0x15]
push 0x10000
cdq
push 0
push edx
push eax
call fcn.007c5f30
add edi, eax
adc ebx, edx
movzx eax, byte [esi + 0x14]
push 0x100
cdq
push 0
push edx
push eax
call fcn.007c5f30
add edi, eax
adc ebx, edx
movzx eax, byte [esi + 0x13]
push 1
cdq
push 0
push edx
push eax
call fcn.007c5f30
add edi, eax
adc ebx, edx
movzx eax, byte [esi + 0x12]
push 0
cdq
push 0x1000000
push edx
push eax
call fcn.007c5f30
add edi, eax
adc ebx, edx
movzx eax, byte [esi + 0x11]
push 0
cdq
push 0x10000
push edx
push eax
call fcn.007c5f30
add edi, eax
adc ebx, edx
movzx eax, byte [esi + 0x10]
push 0
cdq
push 0x100
push edx
push eax
call fcn.007c5f30
add edi, eax
adc ebx, edx
movzx eax, byte [esi + 0xf]
push 0x1000000
cdq
push 0
push edx
push eax
call fcn.007c5f30
add ebp, eax
adc dword [esp + 0x24], edx
movzx eax, byte [esi + 0xe]
push 0x10000
cdq
push 0
push edx
push eax
call fcn.007c5f30
add ebp, eax
adc dword [esp + 0x24], edx
movzx eax, byte [esi + 0xd]
push 0x100
cdq
push 0
push edx
push eax
call fcn.007c5f30
add ebp, eax
adc dword [esp + 0x24], edx
movzx eax, byte [esi + 0xc]
push 1
cdq
push 0
push edx
push eax
call fcn.007c5f30
add ebp, eax
adc dword [esp + 0x24], edx
movzx eax, byte [esi + 0xb]
push 0
cdq
push 0x1000000
push edx
push eax
call fcn.007c5f30
add ebp, eax
adc dword [esp + 0x24], edx
movzx eax, byte [esi + 0xa]
push 0
cdq
push 0x10000
push edx
push eax
call fcn.007c5f30
add ebp, eax
adc dword [esp + 0x24], edx
movzx eax, byte [esi + 9]
push 0
cdq
push 0x100
push edx
push eax
call fcn.007c5f30
add ebp, eax
adc dword [esp + 0x24], edx
movzx eax, byte [esi + 8]
cdq
add ebp, eax
adc dword [esp + 0x24], edx
movzx eax, byte [esi + 7]
push 0x1000000
cdq
push 0
push edx
push eax
call fcn.007c5f30
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + 6]
push 0x10000
cdq
push 0
push edx
push eax
call fcn.007c5f30
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + 5]
push 0x100
cdq
push 0
push edx
push eax
call fcn.007c5f30
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + 4]
push 1
cdq
push 0
push edx
push eax
call fcn.007c5f30
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + 3]
push 0
cdq
push 0x1000000
push edx
push eax
call fcn.007c5f30
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + 2]
push 0
cdq
push 0x10000
push edx
push eax
call fcn.007c5f30
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
movzx eax, byte [esi + 1]
push 0
cdq
push 0x100
push edx
push eax
call fcn.007c5f30
mov ecx, dword [esp + 0x18]
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
movzx eax, byte [esi]
cdq
add ecx, eax
mov eax, dword [esp + 0x1c]
adc eax, edx
mov dword [esp + 0x1c], eax
mov edx, eax
mov eax, dword [esp + 0x24]
sub ecx, edi
sbb edx, ebx
sub ecx, ebp
sbb edx, eax
xor esi, esi
xor edx, esi
mov eax, ebx
shr eax, 0xb
xor ecx, eax
sub ebp, edi
mov eax, ecx
mov ecx, edx
mov edx, dword [esp + 0x24]
sbb edx, ebx
sub ebp, eax
sbb edx, ecx
mov dword [esp + 0x6c], edx
mov edx, eax
mov esi, ecx
shld esi, edx, 9
shl edx, 9
xor ebp, edx
mov edx, dword [esp + 0x6c]
xor edx, esi
sub edi, ebp
sbb ebx, edx
sub edi, eax
sbb ebx, ecx
mov dword [esp + 0x24], edx
mov esi, ebp
shrd esi, edx, 8
xor edi, esi
mov esi, dword [esp + 0x24]
shr edx, 8
xor ebx, edx
mov edx, edi
sub eax, edx
sbb ecx, ebx
sub eax, ebp
sbb ecx, esi
xor edi, edi
xor ecx, edi
mov esi, ebx
shr esi, 6
xor eax, esi
mov esi, dword [esp + 0x24]
sub ebp, edx
sbb esi, ebx
sub ebp, eax
sbb esi, ecx
mov dword [esp + 0x6c], esi
mov esi, eax
mov edi, ecx
shld edi, esi, 0x17
shl esi, 0x17
xor ebp, esi
mov esi, dword [esp + 0x6c]
xor esi, edi
sub edx, ebp
sbb ebx, esi
sub edx, eax
sbb ebx, ecx
mov dword [esp + 0x24], esi
mov edi, ebp
shrd edi, esi, 5
shr esi, 5
xor ebx, esi
mov esi, dword [esp + 0x24]
xor edx, edi
sub eax, edx
sbb ecx, ebx
sub eax, ebp
sbb ecx, esi
mov esi, ebx
xor edi, edi
shr esi, 3
xor ecx, edi
xor eax, esi
mov dword [esp + 0x1c], ecx
sub ebp, edx
mov esi, dword [esp + 0x24]
sbb esi, ebx
sub ebp, eax
sbb esi, ecx
xor ebp, edi
mov edi, dword [esp + 0x1c]
mov ecx, eax
shl ecx, 0x11
xor esi, ecx
sub edx, ebp
sbb ebx, esi
sub edx, eax
sbb ebx, edi
mov ecx, ebp
mov edi, esi
shrd ecx, edi, 0xb
xor edx, ecx
mov ecx, dword [esp + 0x1c]
shr edi, 0xb
xor ebx, edi
sub eax, edx
sbb ecx, ebx
sub eax, ebp
sbb ecx, esi
mov dword [esp + 0x2c], ebx
mov edi, edx
shrd edi, ebx, 0xc
shr ebx, 0xc
xor eax, edi
xor ecx, ebx
mov ebx, dword [esp + 0x2c]
sub ebp, edx
sbb esi, ebx
mov edi, eax
sub ebp, edi
sbb esi, ecx
mov ebx, ecx
shld ebx, eax, 0x12
shl eax, 0x12
xor ebp, eax
xor esi, ebx
mov eax, edx
mov edx, dword [esp + 0x2c]
sub eax, ebp
sbb edx, esi
sub eax, edi
sbb edx, ecx
shrd ebp, esi, 0x16
shr esi, 0x16
pop edi
xor eax, ebp
xor edx, esi
pop esi
pop ebp
pop ebx
add esp, 0x50
ret