Function at 0x509ed0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
mov eax, 0x358
call fcn.005c5c30
mov eax, dword [0x65db30]
xor eax, esp
mov dword [esp + 0x354], eax
cmp dword [esp + 0x360], 0
mov eax, dword [esp + 0x35c]
mov dword [esp + 0x3c], eax
je 0x50a566
push ebx
push ebp
push esi
push edi
lea esi, [ecx + 2]
mov edx, dword [eax]
mov edi, dword [eax + 4]
mov ebx, dword [eax + 0x2c]
dec dword [esp + 0x370]
mov dword [esp + 0x8c], edx
mov dword [esp + 0x10], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x64], edx
mov dword [esp + 0x324], edx
mov edx, dword [eax + 0x10]
mov dword [esp + 0x84], edx
mov dword [esp + 0x32c], edx
mov edx, dword [eax + 0x18]
mov dword [esp + 0x90], edi
mov dword [esp + 0x14], edi
mov edi, dword [eax + 0xc]
mov dword [esp + 0x44], edx
mov dword [esp + 0x334], edx
mov edx, dword [eax + 0x24]
mov dword [esp + 0x68], edi
mov dword [esp + 0x328], edi
mov edi, dword [eax + 0x14]
mov dword [esp + 0x54], edx
mov dword [esp + 0x1c], edx
mov edx, dword [eax + 0x28]
mov dword [esp + 0x88], edi
mov dword [esp + 0x330], edi
mov edi, dword [eax + 0x1c]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x344], edx
mov edx, dword [eax + 0x30]
mov dword [esp + 0x48], edi
mov dword [esp + 0x338], edi
mov edi, dword [eax + 0x20]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x348], ebx
mov ebx, dword [eax + 0x34]
mov dword [esp + 0x6c], edx
mov dword [esp + 0x34c], edx
mov edx, dword [eax + 0x38]
mov eax, dword [eax + 0x3c]
lea ecx, [esp + 0x31c]
mov dword [esp + 0x20], ecx
mov dword [esp + 0x50], edi
mov dword [esp + 0x18], edi
mov dword [esp + 0x70], ebx
mov dword [esp + 0x350], ebx
mov dword [esp + 0x7c], edx
mov dword [esp + 0x80], eax
mov dword [esp + 0x354], edx
mov dword [esp + 0x358], eax
mov dword [esp + 0x2c], 0
mov dword [esp + 0x30], esi
jmp 0x50a014
mov edi, dword [esp + 0x18]
movzx eax, byte [esi - 2]
cdq
shld edx, eax, 8
shl eax, 8
mov ebx, eax
movzx eax, byte [esi - 1]
mov ebp, edx
cdq
or ebx, eax
movzx eax, byte [esi]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [esi + 1]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [esi + 2]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [esi + 3]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [esi + 4]
or ebp, edx
shld ebp, ebx, 8
shl ebx, 8
cdq
or ebx, eax
movzx eax, byte [esi + 5]
or ebp, edx
shld ebp, ebx, 8
cdq
shl ebx, 8
or ebx, eax
mov eax, dword [esp + 0x10]
or ebp, edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x24], ebx
mov dword [ecx], eax
mov eax, dword [esp + 0x1c]
mov dword [ecx + 0x40], ebx
mov dword [esp + 0x28], ebp
mov dword [ecx + 0x44], ebp
mov ebp, eax
mov ebx, edi
shld ebp, ebx, 0x17
mov dword [ecx + 4], edx
mov edx, eax
shl ebx, 0x17
shr edx, 9
or edx, ebx
mov dword [ecx + 0x24], eax
mov ebx, edi
mov dword [ecx + 0x20], edi
shrd edi, eax, 0x12
xor esi, esi
or esi, ebp
shl ebx, 0xe
shr eax, 0x12
xor ebp, ebp
or ebp, edi
or ebx, eax
mov eax, dword [esp + 0x18]
xor edx, ebp
mov ebp, dword [esp + 0x1c]
mov edi, eax
xor esi, ebx
xor ebx, ebx
shl edi, 0x12
shrd eax, ebp, 0xe
or ebx, eax
mov eax, dword [esp + 0x18]
xor edx, ebx
mov ebx, dword [esp + 0x1c]
shr ebp, 0xe
or edi, ebp
mov ebp, dword [ecx + 0x28]
xor esi, edi
and ebp, eax
not ebx
and ebx, dword [ecx + 0x34]
mov edi, eax
mov eax, dword [ecx + 0x2c]
and eax, dword [esp + 0x1c]
not edi
and edi, dword [ecx + 0x30]
mov ecx, dword [esp + 0x24]
xor edi, ebp
xor ebx, eax
mov eax, dword [esp + 0x2c]
add edx, edi
adc esi, ebx
add edx, dword [eax*8 + 0x607f58]
adc esi, dword [eax*8 + 0x607f5c]
mov eax, dword [esp + 0x20]
add edx, dword [eax + 0x38]
adc esi, dword [eax + 0x3c]
add ecx, edx
mov edx, dword [esp + 0x28]
adc edx, esi
mov esi, dword [eax + 0x18]
add esi, ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 0x1c]
adc ecx, edx
mov dword [esp + 0x28], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x14]
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x10]
mov ebx, ecx
mov ebp, edx
shrd ebx, ebp, 0x1c
xor edi, edi
or edi, ebx
shr ebp, 0x1c
mov dword [esp + 0x18], esi
mov esi, ecx
mov ebx, edx
shld edx, ecx, 0x1e
shl esi, 4
or esi, ebp
xor ebp, ebp
or ebp, edx
shr ebx, 2
shl ecx, 0x1e
or ebx, ecx
mov ecx, dword [esp + 0x14]
xor esi, ebp
mov ebp, dword [esp + 0x10]
mov edx, ecx
shld ecx, ebp, 0x19
xor edi, ebx
xor ebx, ebx
shl ebp, 0x19
shr edx, 7
or edx, ebp
or ebx, ecx
mov ecx, dword [esp + 0x74]
xor esi, ebx
xor edi, edx
mov edx, dword [esp + 0x78]
mov ebx, ecx
xor ebx, dword [esp + 0x10]
mov ebp, edx
xor ebp, dword [esp + 0x14]
and ebx, dword [eax + 0x10]
and ebp, dword [eax + 0x14]
and ecx, dword [esp + 0x10]
and edx, dword [esp + 0x14]
xor ebx, ecx
mov ecx, dword [esp + 0x20]
xor edx, ebp
add edi, ebx
adc edx, esi
add edi, dword [esp + 0x24]
mov esi, dword [esp + 0x30]
adc edx, dword [esp + 0x28]
mov eax, edi
mov edi, dword [esp + 0x2c]
inc edi
add esi, 8
sub ecx, 8
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x2c], edi
mov dword [esp + 0x30], esi
mov dword [esp + 0x20], ecx
cmp edi, 0x10
jl 0x50a010
cmp edi, 0x50
jge 0x50a4a2
lea eax, [edi*8 + 0x607f58]
mov dword [esp + 0x2c], eax
lea ecx, [ecx]
mov eax, dword [ecx + 0xbc]
mov edx, dword [ecx + 0xb8]
mov dword [esp + 0x38], eax
mov eax, dword [ecx + 0x50]
mov ecx, dword [ecx + 0x54]
mov dword [esp + 0x34], edx
mov edx, eax
mov edi, eax
mov ebp, ecx
mov dword [esp + 0x94], eax
shld ebp, eax, 3
mov ebx, ecx
shrd edi, ebx, 0x13
xor esi, esi
or esi, edi
add eax, eax
add eax, eax
mov edi, ecx
add eax, eax
shr ebx, 0x13
shr edi, 0x1d
or edi, eax
mov eax, dword [esp + 0x94]
shrd eax, ecx, 6
xor esi, edi
shl edx, 0xd
or edx, ebx
xor esi, eax
mov eax, dword [esp + 0x34]
xor ebx, ebx
or ebx, ebp
xor edx, ebx
shr ecx, 6
xor edx, ecx
mov ecx, dword [esp + 0x38]
mov ebp, ecx
mov ebx, eax
shrd ebx, ebp, 8
xor edi, edi
or edi, ebx
mov dword [esp + 0x58], esi
mov esi, eax
shl esi, 0x18
mov ebx, eax
shrd eax, ecx, 1
shr ebp, 8
or esi, ebp
shr ecx, 1
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x38]
shl ebx, 0x1f
or ebx, ecx
mov ecx, dword [esp + 0x34]
shrd ecx, eax, 7
xor edi, ebp
xor esi, ebx
shr eax, 7
xor esi, eax
mov eax, dword [esp + 0x20]
xor edi, ecx
mov ecx, dword [esp + 0x58]
add ecx, edi
mov edi, dword [esp + 0x1c]
adc edx, esi
add ecx, dword [eax + 0xc0]
mov esi, dword [esp + 0x10]
adc edx, dword [eax + 0xc4]
add ecx, dword [eax + 0x78]
mov dword [eax], esi
adc edx, dword [eax + 0x7c]
mov esi, dword [esp + 0x14]
mov dword [eax + 4], esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x28], edx
mov dword [eax + 0x44], edx
mov dword [esp + 0x24], ecx
mov dword [eax + 0x20], esi
mov dword [eax + 0x24], edi
mov dword [eax + 0x40], ecx
mov edx, edi
mov ecx, esi
mov ebp, edi
shld ebp, ecx, 0x17
shl ecx, 0x17
shr edx, 9
or edx, ecx
mov ecx, esi
shrd esi, edi, 0x12
xor ebx, ebx
or ebx, ebp
shl ecx, 0xe
xor ebp, ebp
or ebp, esi
xor edx, ebp
mov ebp, dword [esp + 0x1c]
shr edi, 0x12
or ecx, edi
xor ebx, ecx
mov ecx, dword [esp + 0x18]
mov esi, ecx
shrd ecx, ebp, 0xe
shl esi, 0x12
xor edi, edi
or edi, ecx
mov ecx, dword [esp + 0x18]
shr ebp, 0xe
or esi, ebp
mov ebp, dword [eax + 0x28]
xor ebx, esi
xor edx, edi
mov edi, dword [esp + 0x1c]
and ebp, ecx
mov esi, ecx
mov ecx, dword [esp + 0x2c]
not esi
and esi, dword [eax + 0x30]
not edi
and edi, dword [eax + 0x34]
mov eax, dword [eax + 0x2c]
and eax, dword [esp + 0x1c]
xor esi, ebp
xor edi, eax
mov eax, dword [esp + 0x20]
add edx, esi
adc ebx, edi
add edx, dword [eax + 0x38]
mov esi, dword [eax + 0x18]
adc ebx, dword [eax + 0x3c]
add edx, dword [ecx]
adc ebx, dword [ecx + 4]
mov ecx, dword [esp + 0x24]
add ecx, edx
mov edx, dword [esp + 0x28]
adc edx, ebx
add esi, ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 0x1c]
adc ecx, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x40], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x14]
mov ebx, ecx
mov ebp, edx
shrd ebx, ebp, 0x1c
xor edi, edi
mov dword [esp + 0x18], esi
or edi, ebx
mov esi, ecx
mov ebx, edx
shr ebp, 0x1c
shl esi, 4
shld edx, ecx, 0x1e
or esi, ebp
shr ebx, 2
xor ebp, ebp
shl ecx, 0x1e
or ebp, edx
or ebx, ecx
mov ecx, dword [esp + 0x14]
xor esi, ebp
mov ebp, dword [esp + 0x10]
mov edx, ecx
shld ecx, ebp, 0x19
xor edi, ebx
shr edx, 7
xor ebx, ebx
or ebx, ecx
mov ecx, dword [esp + 0x3c]
shl ebp, 0x19
or edx, ebp
xor esi, ebx
xor edi, edx
mov edx, dword [esp + 0x40]
mov ebx, ecx
xor ebx, dword [esp + 0x10]
and ecx, dword [esp + 0x10]
and ebx, dword [eax + 0x10]
mov ebp, edx
xor ebp, dword [esp + 0x14]
and edx, dword [esp + 0x14]
and ebp, dword [eax + 0x14]
xor ebx, ecx
mov ecx, dword [esp + 0x20]
xor edx, ebp
add edi, ebx
adc edx, esi
add edi, dword [esp + 0x24]
mov esi, dword [esp + 0x2c]
adc edx, dword [esp + 0x28]
add esi, 8
sub ecx, 8
mov eax, edi
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x2c], esi
mov dword [esp + 0x20], ecx
cmp esi, 0x6081d8
jl 0x50a240
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x8c]
mov ebx, dword [esp + 0x90]
add edi, eax
mov eax, dword [esp + 0x4c]
adc ebx, edx
mov edx, dword [ecx + 8]
add edx, dword [esp + 0x64]
mov dword [eax], edi
mov edi, dword [ecx + 0xc]
adc edi, dword [esp + 0x68]
mov dword [eax + 8], edx
mov edx, dword [ecx + 0x10]
add edx, dword [esp + 0x84]
mov dword [eax + 0xc], edi
mov edi, dword [ecx + 0x14]
adc edi, dword [esp + 0x88]
mov dword [eax + 0x10], edx
mov edx, dword [ecx + 0x18]
add edx, dword [esp + 0x44]
mov dword [eax + 0x14], edi
mov edi, dword [ecx + 0x1c]
adc edi, dword [esp + 0x48]
mov dword [eax + 0x18], edx
mov edx, dword [esp + 0x50]
add edx, dword [esp + 0x18]
mov dword [eax + 0x1c], edi
mov edi, dword [esp + 0x54]
adc edi, dword [esp + 0x1c]
mov dword [eax + 0x20], edx
mov edx, dword [ecx + 0x28]
add edx, dword [esp + 0x5c]
mov dword [eax + 0x24], edi
mov edi, dword [ecx + 0x2c]
adc edi, dword [esp + 0x60]
mov dword [eax + 0x28], edx
mov edx, dword [ecx + 0x30]
add edx, dword [esp + 0x6c]
mov dword [eax + 0x2c], edi
mov edi, dword [ecx + 0x34]
adc edi, dword [esp + 0x70]
mov dword [eax + 0x30], edx
mov edx, dword [ecx + 0x38]
add edx, dword [esp + 0x7c]
mov ecx, dword [ecx + 0x3c]
adc ecx, dword [esp + 0x80]
cmp dword [esp + 0x370], 0
mov dword [eax + 4], ebx
mov dword [eax + 0x34], edi
mov dword [eax + 0x38], edx
mov dword [eax + 0x3c], ecx
jne 0x509f08
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x354]
xor ecx, esp
call fcn.005c5718
add esp, 0x358
ret