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

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x31c
cmp dword [esp + 0x324], 0
push ebx
push ebp
push esi
push edi
je 0x41583e
sub ecx, 0x66e350
mov dword [esp + 0x34], ecx
mov ecx, dword [eax + 4]
mov edx, dword [eax + 8]
mov ebp, dword [eax]
mov edi, dword [eax + 0x20]
mov ebx, dword [eax + 0x24]
dec dword [esp + 0x334]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x2e8], edx
mov edx, dword [eax + 0x10]
mov dword [esp + 0x2ec], ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x2f0], edx
mov edx, dword [eax + 0x18]
mov dword [esp + 0x2f4], ecx
mov ecx, dword [eax + 0x1c]
mov dword [esp + 0x2f8], edx
mov edx, dword [eax + 0x28]
mov dword [esp + 0x2fc], ecx
mov ecx, dword [eax + 0x2c]
mov dword [esp + 0x308], edx
mov edx, dword [eax + 0x30]
mov dword [esp + 0x30c], ecx
mov ecx, dword [eax + 0x34]
mov dword [esp + 0x310], edx
mov edx, dword [eax + 0x38]
mov eax, dword [eax + 0x3c]
mov dword [esp + 0x31c], eax
lea esi, [esp + 0x2e0]
xor eax, eax
mov dword [esp + 0x30], esi
mov dword [esp + 0x10], ebp
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x314], ecx
mov dword [esp + 0x318], edx
mov dword [esp + 0x2c], eax
jmp 0x4153bb
mov ebx, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
lea ecx, [ecx + eax*8 + 0x66e350]
call fcn.004152d0
mov ecx, dword [esp + 0x14]
mov dword [esi + 4], ecx
mov dword [esi + 0x40], eax
mov dword [esp + 0x20], eax
mov dword [esi + 0x44], edx
mov dword [esp + 0x24], edx
mov eax, edi
mov ecx, ebx
shld ecx, eax, 0x17
shl eax, 0x17
mov edx, ebx
shr edx, 9
or edx, eax
mov dword [esi + 0x20], edi
mov dword [esi + 0x24], ebx
mov eax, edi
shrd edi, ebx, 0x12
shl eax, 0xe
mov dword [esi], ebp
xor ebp, ebp
or ebp, ecx
xor ecx, ecx
or ecx, edi
xor edx, ecx
shr ebx, 0x12
or eax, ebx
mov ebx, dword [esp + 0x1c]
xor ebp, eax
mov eax, dword [esp + 0x18]
mov ecx, eax
shrd eax, ebx, 0xe
shl ecx, 0x12
xor edi, edi
or edi, eax
mov eax, dword [esp + 0x18]
shr ebx, 0xe
or ecx, ebx
mov ebx, dword [esi + 0x28]
xor ebp, ecx
xor edx, edi
mov edi, dword [esp + 0x1c]
and ebx, eax
mov ecx, eax
mov eax, dword [esi + 0x2c]
and eax, dword [esp + 0x1c]
not ecx
and ecx, dword [esi + 0x30]
not edi
and edi, dword [esi + 0x34]
xor ecx, ebx
xor edi, eax
mov eax, dword [esp + 0x2c]
add edx, ecx
mov ecx, dword [esp + 0x20]
adc ebp, edi
add edx, dword [eax*8 + 0x66e350]
adc ebp, dword [eax*8 + 0x66e354]
mov eax, dword [esp + 0x30]
add edx, dword [eax + 0x38]
mov esi, dword [eax + 0x18]
adc ebp, dword [eax + 0x3c]
add ecx, edx
mov edx, dword [esp + 0x24]
adc edx, ebp
add esi, ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x1c]
adc ecx, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x24], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x54], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x18], esi
mov dword [esp + 0x50], edx
mov esi, ecx
xor ebp, ebp
mov edx, dword [esp + 0x14]
mov edi, ecx
mov ebx, edx
shrd edi, ebx, 0x1c
or ebp, edi
shr ebx, 0x1c
shl esi, 4
or esi, ebx
mov edi, edx
shld edx, ecx, 0x1e
xor ebx, ebx
or ebx, edx
xor esi, ebx
mov ebx, dword [esp + 0x10]
shr edi, 2
shl ecx, 0x1e
or edi, ecx
mov ecx, dword [esp + 0x14]
xor ebp, edi
mov edx, ecx
shld ecx, ebx, 0x19
shl ebx, 0x19
xor edi, edi
or edi, ecx
mov ecx, dword [esp + 0x50]
shr edx, 7
or edx, ebx
xor esi, edi
xor ebp, edx
mov edx, dword [esp + 0x54]
mov edi, ecx
xor edi, dword [esp + 0x10]
and ecx, dword [esp + 0x10]
and edi, dword [eax + 0x10]
mov ebx, edx
xor ebx, dword [esp + 0x14]
and edx, dword [esp + 0x14]
and ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x2c]
xor edi, ecx
xor ebx, edx
add ebp, edi
adc esi, ebx
add ebp, dword [esp + 0x20]
adc esi, dword [esp + 0x24]
inc eax
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x30]
sub esi, 8
cmp eax, 0x10
mov dword [esp + 0x10], ebp
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], esi
jl 0x4153b3
cmp eax, 0x50
jge 0x4157c5
lea eax, [eax*8 + 0x66e350]
mov dword [esp + 0x2c], eax
jmp 0x415570
mov eax, dword [esi + 0x50]
mov ecx, dword [esi + 0xb8]
mov edx, dword [esi + 0xbc]
mov esi, dword [esi + 0x54]
mov edi, eax
mov dword [esp + 0x38], ecx
mov ecx, eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x58], eax
mov ebp, esi
shld ebp, eax, 3
mov ebx, esi
shrd edi, ebx, 0x13
xor edx, edx
or edx, edi
add eax, eax
add eax, eax
mov edi, esi
add eax, eax
shr edi, 0x1d
or edi, eax
mov eax, dword [esp + 0x58]
shrd eax, esi, 6
xor edx, edi
xor edx, eax
mov eax, dword [esp + 0x38]
shr ebx, 0x13
shl ecx, 0xd
or ecx, ebx
xor ebx, ebx
or ebx, ebp
xor ecx, ebx
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x3c]
mov ebp, edx
shr esi, 6
xor ecx, esi
mov ebx, eax
shrd ebx, ebp, 8
xor edi, edi
or edi, ebx
mov esi, eax
shl esi, 0x18
mov ebx, eax
shrd eax, edx, 1
shr ebp, 8
or esi, ebp
shr edx, 1
xor ebp, ebp
or ebp, eax
mov eax, dword [esp + 0x3c]
shl ebx, 0x1f
or ebx, edx
mov edx, dword [esp + 0x38]
shrd edx, eax, 7
xor edi, ebp
xor esi, ebx
xor edi, edx
mov edx, dword [esp + 0x4c]
shr eax, 7
xor esi, eax
mov eax, dword [esp + 0x30]
add edx, edi
mov edi, dword [esp + 0x1c]
adc ecx, esi
add edx, dword [eax + 0xc0]
mov esi, dword [esp + 0x10]
adc ecx, dword [eax + 0xc4]
add edx, dword [eax + 0x78]
mov dword [eax], esi
mov esi, dword [esp + 0x14]
adc ecx, dword [eax + 0x7c]
mov dword [eax + 4], esi
mov esi, dword [esp + 0x18]
mov dword [esp + 0x20], edx
mov dword [eax + 0x40], edx
mov dword [esp + 0x24], ecx
mov dword [eax + 0x20], esi
mov dword [eax + 0x24], edi
mov dword [eax + 0x44], 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
shr edi, 0x12
or ecx, edi
xor ebx, ecx
mov ecx, dword [esp + 0x18]
xor ebp, ebp
or ebp, esi
xor edx, ebp
mov ebp, dword [esp + 0x1c]
mov esi, ecx
shrd ecx, ebp, 0xe
xor edi, edi
or edi, ecx
mov ecx, dword [esp + 0x18]
shl esi, 0x12
xor edx, edi
mov edi, dword [esp + 0x1c]
shr ebp, 0xe
or esi, ebp
mov ebp, dword [eax + 0x28]
xor ebx, esi
mov esi, ecx
and ebp, 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 + 0x30]
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 + 0x20]
add ecx, edx
mov edx, dword [esp + 0x24]
adc edx, ebx
add esi, ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0x1c]
adc ecx, edx
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x24], edx
mov edx, dword [eax + 8]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x10]
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x14]
mov edi, ecx
mov ebx, edx
shrd edi, ebx, 0x1c
xor ebp, ebp
mov dword [esp + 0x18], esi
or ebp, edi
mov esi, ecx
mov edi, edx
shr ebx, 0x1c
shl esi, 4
shld edx, ecx, 0x1e
or esi, ebx
shr edi, 2
xor ebx, ebx
shl ecx, 0x1e
or ebx, edx
or edi, ecx
mov ecx, dword [esp + 0x14]
xor esi, ebx
mov ebx, dword [esp + 0x10]
xor ebp, edi
mov edx, ecx
shld ecx, ebx, 0x19
shl ebx, 0x19
xor edi, edi
or edi, ecx
mov ecx, dword [esp + 0x40]
shr edx, 7
or edx, ebx
xor esi, edi
xor ebp, edx
mov edx, dword [esp + 0x44]
mov edi, ecx
xor edi, dword [esp + 0x10]
and ecx, dword [esp + 0x10]
and edi, dword [eax + 0x10]
mov ebx, edx
xor ebx, dword [esp + 0x14]
and edx, dword [esp + 0x14]
and ebx, dword [eax + 0x14]
mov eax, dword [esp + 0x2c]
xor edi, ecx
xor ebx, edx
add ebp, edi
adc esi, ebx
add ebp, dword [esp + 0x20]
adc esi, dword [esp + 0x24]
add eax, 8
mov dword [esp + 0x14], esi
mov esi, dword [esp + 0x30]
sub esi, 8
cmp eax, 0x66e5d0
mov dword [esp + 0x10], ebp
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], esi
jl 0x415570
mov eax, dword [esp + 0x330]
add dword [eax], ebp
mov ecx, dword [esp + 0x14]
mov edx, dword [esi + 8]
adc dword [eax + 4], ecx
add dword [eax + 8], edx
mov ecx, dword [esi + 0xc]
mov edx, dword [esi + 0x10]
adc dword [eax + 0xc], ecx
add dword [eax + 0x10], edx
mov ecx, dword [esi + 0x14]
mov edx, dword [esi + 0x18]
adc dword [eax + 0x14], ecx
add dword [eax + 0x18], edx
mov ecx, dword [esi + 0x1c]
mov edx, dword [esp + 0x18]
adc dword [eax + 0x1c], ecx
add dword [eax + 0x20], edx
mov ecx, dword [esp + 0x1c]
mov edx, dword [esi + 0x28]
adc dword [eax + 0x24], ecx
add dword [eax + 0x28], edx
mov ecx, dword [esi + 0x2c]
mov edx, dword [esi + 0x30]
adc dword [eax + 0x2c], ecx
add dword [eax + 0x30], edx
mov ecx, dword [esi + 0x34]
mov edx, dword [esi + 0x38]
adc dword [eax + 0x34], ecx
add dword [eax + 0x38], edx
mov ecx, dword [esi + 0x3c]
adc dword [eax + 0x3c], ecx
sub dword [esp + 0x34], 0xffffff80
cmp dword [esp + 0x334], 0
jne 0x415306
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x31c
ret