Function at 0x4ace20
Capabilities:
Access peb ldr_data
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x28
mov eax, dword fs:[0x18]
mov dword [0x4e5fa8], eax
mov eax, dword [eax + 0x30]
mov ebp, dword [eax + 0xc]
mov ecx, dword [ebp + 0xc]
mov eax, 1
test ecx, ecx
je 0x4acfc5
add ebp, 0xc
cmp ecx, ebp
je 0x4acfc5
mov dword [esp + 0xc], ebp
jmp 0x4ace6a
mov ecx, dword [ecx]
cmp ecx, ebp
je 0x4acfc0
mov esi, dword [ecx + 0x30]
movzx ebx, word [esi]
movzx eax, word [0x4e55fc]
movzx edx, word [0x4e55fe]
mov edi, eax
or edi, edx
not edi
add edi, edx
not eax
or eax, edx
sub edi, eax
cmp bx, di
je 0x4ace60
mov dword [esp], ecx
add esi, 2
xor edi, edi
nop dword [eax]
mov ebp, edi
rol ebp, 0x14
movzx ecx, bl
mov eax, ebx
xor eax, 0xff
mov edx, ecx
sub edx, eax
sub edx, eax
or ebx, 0xff
add ebx, edx
add ebx, eax
sub ebx, ecx
movzx ebx, bx
movzx eax, word [0x4e5600]
movzx edx, word [0x4e5602]
mov ecx, edx
not ecx
mov edi, eax
and edi, ecx
xor edx, eax
not edx
add edx, edi
or ecx, eax
sub edx, ecx
add edx, 0x60
lea edi, [ebx - 0x20]
cmp bx, dx
cmovbe edi, ebx
add edi, ebp
movzx eax, word [0x4e5604]
movzx ebx, word [str._K_]
mov edx, eax
not edx
mov ecx, edx
and ecx, ebx
add ecx, ecx
mov ebp, eax
xor ebp, ebx
sub ebp, ecx
or edx, ebx
not ebx
or ebx, eax
sub ebp, ebx
add ebp, edx
movzx ebx, word [esi]
add esi, 2
cmp bx, bp
jne 0x4acea0
mov edx, dword [0x4e5608]
mov eax, dword [0x4e560c]
mov ecx, edx
xor ecx, eax
mov esi, edx
and edx, eax
not eax
add eax, ecx
not esi
add esi, eax
not edx
add edx, edx
sub esi, edx
add esi, 0xe616dcd1
cmp edi, esi
mov ecx, dword [esp]
mov ebp, dword [esp + 0xc]
jne 0x4ace60
mov esi, dword [ecx + 0x18]
test esi, esi
mov eax, 1
je 0x4acfc5
mov eax, dword [esi + 0x3c]
mov ecx, dword [eax + esi + 0x78]
mov eax, 2
test ecx, ecx
je 0x4acfc5
mov eax, dword [0x4e5618]
mov edx, dword [0x4e561c]
mov dword [esp + 8], esi
mov esi, eax
xor esi, eax
not esi
and esi, edx
xor esi, eax
mov edi, eax
or edi, edx
not edi
add edi, esi
mov esi, dword [esp + 8]
lea ecx, [ecx + esi*2]
and eax, edx
mov ebx, esi
not ebx
add eax, edi
add eax, 1
mov edx, dword [ebx + ecx + 0x19]
mov dword [esp], edx
cmp edx, eax
jne 0x4acfcd
mov eax, 2
jmp 0x4acfc5
mov eax, 1
add esp, 0x28
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [ebx + ecx + 0x1d]
add eax, esi
add eax, 0x6ffbf9bb
mov dword [esp + 0x14], eax
mov eax, dword [ebx + ecx + 0x21]
mov edx, eax
and edx, ebx
lea edx, [edx + esi*2]
mov edi, eax
xor edi, esi
not edi
add edi, edx
not eax
or eax, esi
sub edi, eax
add edi, 0xd58985ac
mov dword [esp + 0xc], edi
mov dword [esp + 0x1c], ebx
mov eax, dword [ebx + ecx + 0x25]
add eax, esi
add eax, 0x42b5ab56
mov dword [esp + 0x18], eax
xor ecx, ecx
mov dl, 1
jmp 0x4ad037
mov eax, ecx
xor eax, 1
add eax, ecx
xor ecx, 0xfffffffe
add ecx, eax
add ecx, 2
cmp ecx, dword [esp]
setb dl
je 0x4acfb9
mov eax, dword [esp + 0xc]
mov ebp, dword [eax + ecx*4 + 0x2a767a54]
mov dh, byte [ebp + esi]
test dh, dh
je 0x4ad020
add ebp, esi
add ebp, 1
xor edi, edi
nop word cs:[eax + eax]
nop dword [eax + eax]
mov eax, edi
rol eax, 0x14
movsx esi, dh
mov edi, esi
and edi, 0xffffffe0
cmp dh, 0x61
lea ebx, [esi + edi*2]
not edi
lea edi, [ebx + edi*2 - 0x1e]
cmovl edi, esi
add edi, eax
mov dh, byte [ebp]
movzx eax, byte [0x4e5624]
mov ah, byte [0x4e5625]
mov bl, ah
not bl
and bl, al
add bl, ah
or al, ah
sub bl, al
add ebp, 1
cmp dh, bl
jne 0x4ad060
cmp edi, 0x22f765ae
mov esi, dword [esp + 8]
jne 0x4ad020
test dl, 1
je 0x4acfb9
mov edx, dword [0x4e5630]
mov esi, dword [0x4e5634]
mov eax, edx
not eax
mov edi, eax
and edi, esi
mov ebx, edx
xor ebx, esi
sub edi, ebx
or edx, esi
add edi, edx
not edx
add edx, edi
or eax, esi
mov esi, dword [esp + 8]
sub edx, eax
mov eax, dword [esp + 0x18]
movzx eax, word [eax + ecx*2 - 0x42b5ab56]
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + eax*4 - 0x6ffbf9bb]
add eax, esi
mov dword [esp + 0x24], eax
cmp eax, edx
mov eax, 2
je 0x4acfc5
xor ebp, ebp
mov cl, 1
jmp 0x4ad144
mov eax, ebp
and eax, 0xfffffffe
add eax, ebp
mov ecx, ebp
add ecx, ebp
or ecx, 2
sub eax, ecx
mov ecx, ebp
xor ecx, 1
add ecx, eax
or ebp, 0xfffffffe
add ebp, ecx
add ebp, 4
mov eax, 3
cmp ebp, dword [esp]
setb cl
je 0x4acfc5
mov eax, dword [esp + 0xc]
mov eax, dword [eax + ebp*4 + 0x2a767a54]
mov edx, eax
and edx, esi
add edx, eax
add edx, esi
mov edi, eax
or edi, esi
not edi
add edi, edx
mov dl, byte [0x4e5638]
mov dh, byte [0x4e5639]
mov ebx, edx
or bl, dh
mov bh, dh
add bh, dh
sub bh, bl
not dl
or dl, dh
mov bl, dh
not bl
add bl, bh
xor eax, esi
sub bl, dl
mov dh, byte [eax + edi + 1]
cmp dh, bl
je 0x4ad114
mov byte [esp + 0x10], cl
mov dword [esp + 4], ebp
add eax, edi
add eax, 1
add eax, 1
xor ebp, ebp
nop dword [eax]
mov edi, ebp
rol edi, 0x14
movsx esi, dh
movzx ebx, byte [0x4e563a]
mov bh, byte [0x4e563b]
mov dl, bl
not dl
or dl, bl
and dl, bh
sub dl, bh
add dl, 0x60
mov ebx, esi
or ebx, 0xffffffe0
lea ebp, [esi + ebx*2]
not ebx
add ebx, ebp
mov ebp, esi
not ebp
or ebp, 0xffffffe0
cmp dh, dl
lea ebp, [ebp + ebx + 2]
cmovle ebp, esi
add ebp, edi
mov dh, byte [eax]
mov dl, byte [0x4e563c]
movzx ebx, byte [0x4e563d]
mov bh, bl
not bh
and bh, dl
mov ecx, edx
not cl
add cl, bh
and dl, bl
add dl, cl
add dl, 1
add eax, 1
cmp dh, dl
jne 0x4ad1a0
mov esi, dword [0x4e5640]
mov eax, dword [0x4e5644]
mov edx, esi
not edx
mov ecx, edx
and ecx, eax
mov edi, esi
xor edi, eax
sub edi, ecx
not eax
sub edi, eax
or eax, esi
add eax, edi
add eax, edx
add eax, 0xabddce5d
cmp ebp, eax
mov esi, dword [esp + 8]
mov ebp, dword [esp + 4]
mov cl, byte [esp + 0x10]
jne 0x4ad114
mov eax, 3
test cl, 1
je 0x4acfc5
mov eax, dword [esp + 0x18]
movzx eax, word [eax + ebp*2 - 0x42b5ab56]
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx + eax*4 - 0x6ffbf9bb]
mov edx, eax
xor edx, esi
add edx, eax
add edx, esi
add edx, dword [esp + 0x1c]
mov edi, eax
not edi
add edi, edx
and eax, esi
not eax
add eax, eax
sub edi, eax
mov eax, dword [0x4e5648]
mov ecx, dword [0x4e564c]
mov edx, eax
and edx, ecx
mov esi, ecx
not esi
and esi, eax
sub esi, edx
add esi, ecx
xor eax, ecx
sub esi, eax
mov eax, 3
mov dword [esp + 0x20], edi
cmp edi, esi
mov esi, dword [esp + 8]
je 0x4acfc5
xor ebp, ebp
mov cl, 1
jmp 0x4ad2f5
cmp edx, 0x6b56ea61
je 0x4ad384
mov eax, ebp
and eax, 1
mov ecx, ebp
add ecx, ebp
sub ecx, eax
mov eax, ebp
xor eax, 0xfffffffe
add eax, ecx
or ebp, 0xfffffffe
sub eax, ebp
add eax, 1
mov ebp, eax
cmp eax, dword [esp]
mov eax, 4
setb cl
je 0x4acfc5
mov byte [esp + 0x10], cl
mov eax, dword [esp + 0xc]
mov eax, dword [eax + ebp*4 + 0x2a767a54]
mov cl, byte [eax + esi]
test cl, cl
je 0x4ad2c8
add eax, esi
add eax, 1
xor edx, edx
jmp 0x4ad34b
add edx, edi
movzx ecx, byte [eax]
mov byte [esp + 4], cl
movzx ecx, byte [0x4e5654]
mov ch, byte [0x4e5655]
mov bl, ch
not bl
mov bh, cl
and bh, bl
not cl
and ch, cl
sub ch, bh
add ch, bl
sub ch, cl
mov cl, byte [esp + 4]
add eax, 1
cmp cl, ch
je 0x4ad2bc
mov byte [esp + 4], cl
rol edx, 0x14
movsx edi, cl
mov ch, byte [0x4e5652]
movzx ebx, byte [0x4e5653]
mov bh, ch
not bh
mov cl, bh
add cl, bh
add cl, ch
or bh, bl
sub bh, cl
and ch, bl
not ch
add ch, bh
add ch, 0x60
cmp byte [esp + 4], ch
jle 0x4ad314
add edi, 0xffffffe0
jmp 0x4ad314
test byte [esp + 0x10], 1
je 0x4ad584
mov eax, dword [0x4e5660]
mov ecx, dword [0x4e5664]
mov edx, eax
not edx
mov esi, edx
and esi, ecx
mov edi, eax
xor edi, ecx
sub edi, esi
add edi, edx
and eax, ecx
add eax, edi
add eax, 1
mov ecx, dword [esp + 0x18]
movzx ecx, word [ecx + ebp*2 - 0x42b5ab56]
mov edx, dword [esp + 0x14]
mov edx, dword [edx + ecx*4 - 0x6ffbf9bb]
mov ecx, dword [esp + 8]
add edx, ecx
mov dword [esp + 0x10], edx
cmp edx, eax
mov eax, 4
je 0x4acfc5
xor edx, edx
mov byte [esp + 4], 1
jmp 0x4ad410
mov eax, edx
not eax
and eax, 1
add eax, edx
or edx, 0xfffffffe
add edx, eax
add edx, 2
mov eax, 5
cmp edx, dword [esp]
setb byte [esp + 4]
mov ecx, dword [esp + 8]
je 0x4acfc5
mov eax, dword [esp + 0xc]
mov esi, dword [eax + edx*4 + 0x2a767a54]
mov edi, esi
and edi, dword [esp + 0x1c]
add edi, esi
mov eax, esi
not eax
and eax, ecx
add eax, edi
add eax, ecx
xor esi, ecx
sub eax, esi
mov ch, byte [eax]
mov cl, byte [0x4e5668]
mov bh, byte [0x4e5669]
mov bl, cl
and bl, bh
not cl
add bl, cl
or cl, bh
sub bl, cl
cmp ch, bl
je 0x4ad3e8
add eax, 1
xor esi, esi
mov edi, esi
rol edi, 0x14
movsx ebx, ch
lea esi, [ebx - 0x20]
cmp ch, 0x61
cmovl esi, ebx
add esi, edi
mov ch, byte [eax]
add eax, 1
test ch, ch
jne 0x4ad454
cmp esi, 0x34a9a7a3
jne 0x4ad3e8
test byte [esp + 4], 1
je 0x4ad632
mov eax, dword [esp + 0x18]
movzx eax, word [eax + edx*2 - 0x42b5ab56]
mov ebx, dword [esp + 8]
mov ecx, dword [esp + 0x14]
add ebx, dword [ecx + eax*4 - 0x6ffbf9bb]
mov ecx, dword [0x4e5678]
mov eax, dword [0x4e567c]
mov edx, eax
not edx
mov esi, ecx
and esi, edx
lea esi, [eax + esi*2]
mov edi, ecx
or edi, eax
sub esi, edi
xor eax, ecx
not eax
add eax, esi
or edx, ecx
sub eax, edx
cmp ebx, eax
mov eax, 5
je 0x4acfc5
mov dword [esp + 8], ebx
sub esp, 0x10
movaps xmm0, xmmword [0x4baff0]
movups xmmword [esp], xmm0
call dword [esp + 0x20]
mov ecx, eax
mov dword [esp], eax
test eax, eax
je 0x4ad780
mov esi, dword [esp]
push esi
call fcn.00401020
add esp, 4
push esi
call fcn.00476620
add esp, 4
push esi
call fcn.004a2680
add esp, 4
push esi
call fcn.004a3e00
add esp, 4
mov eax, esi
and eax, 0xfffe9fff
add eax, esi
mov ecx, esi
not ecx
mov dword [esp + 4], ecx
and ecx, 0x16000
add ecx, eax
mov eax, esi
xor eax, 0x16000
sub ecx, eax
cmp dword [ecx + 0x16000], 0
je 0x4ad63c
add ecx, 0x16000
mov edx, dword [esp]
mov eax, edx
and eax, 0xffc00000
lea esi, [edx + edx]
sub esi, eax
mov edi, dword [esp + 4]
and edi, 0xffc00000
add edi, esi
mov eax, edx
xor eax, 0xffc00000
sub edi, eax
add edi, 0xffc00000
mov dword [esp + 0xc], edi
jmp 0x4ad59e
mov eax, 4
jmp 0x4acfc5
mov edi, dword [ecx + 4]
cmp dword [ecx + edi], 0
lea ecx, [ecx + edi]
je 0x4ad63c
mov edi, dword [ecx + 4]
cmp edi, 7
jbe 0x4ad630
mov eax, edi
not eax
mov ebx, eax
and ebx, 0xfffffff8
add ebx, edi
mov esi, eax
and esi, 7
add esi, ebx
sub esi, eax
add esi, 0xfffffff8
cmp esi, 2
jb 0x4ad591
shr esi, 1
xor edi, edi
jmp 0x4ad60b
mov eax, dword [ecx]
mov edx, ebx
and edx, 0xfff
mov ebp, ebx
and ebp, 0xfffff000
lea edx, [edx*2]
add edx, ebp
sub edx, ebx
movzx edx, dx
add edx, dword [esp]
mov ebx, dword [esp + 0xc]
add dword [eax + edx], ebx
mov eax, edi
xor eax, 1
mov edx, edi
xor edx, 0xfffffffe
add edx, eax
add edi, edx
add edi, 2
cmp edi, esi
je 0x4ad58e
movzx ebx, word [ecx + edi*2 + 8]
cmp ebx, 0x1000
jb 0x4ad58e
movzx eax, bx
shr eax, 0xc
cmp ax, 0xa
je 0x4ad5cc
cmp ax, 3
je 0x4ad5cc
jmp 0x4ad5f6
jmp 0x4ad630
mov eax, 5
jmp 0x4acfc5
mov ecx, dword [esp]
mov eax, ecx
and eax, 0xfffed663
add ecx, ecx
sub ecx, eax
mov eax, dword [esp + 4]
add ecx, eax
or eax, 0x1299c
sub ecx, eax
add ecx, 0x1299c
mov dword [esp + 4], ecx
mov eax, dword [esp + 4]
mov eax, dword [eax + 0xc]
mov edi, dword [0x4e56a4]
mov edx, dword [0x4e56a8]
mov ecx, edi
xor ecx, edx
not ecx
add ecx, edi
not edx
add ecx, edx
or edx, edi
add edx, edx
sub ecx, edx
cmp eax, ecx
je 0x4ad78a
add eax, dword [esp]
push eax
call dword [esp + 0x28]
mov dword [esp + 0xc], eax
test eax, eax
je 0x4ad661
mov eax, dword [esp + 4]
mov eax, dword [eax + 0x10]
mov ecx, eax
not ecx
mov esi, dword [esp]
and ecx, esi
mov edx, eax
sub edx, ecx
add edx, esi
mov ecx, eax
or ecx, esi
add ecx, edx
sub ecx, eax
mov edi, dword [ecx]
test edi, edi
je 0x4ad774
mov esi, ecx
mov eax, dword [0x4e56b4]
mov ebp, dword [0x4e56b8]
lea edx, [eax + ebp]
mov ecx, eax
xor ecx, ebp
lea ebx, [ecx + ecx*2]
sub edx, ebx
not ecx
add ecx, ecx
sub edx, ecx
and eax, ebp
not eax
lea eax, [edx + eax*2]
cmp edi, eax
movzx ecx, di
mov eax, dword [esp]
lea eax, [edi + eax + 2]
cmovl eax, ecx
add esi, 4
test eax, eax
je 0x4ad77e
push eax
push dword [esp + 0x10]
call dword [esp + 0x28]
mov dword [esp + 0x10], esi
mov dword [esi - 4], eax
mov ecx, dword [esi]
mov eax, ecx
not eax
or eax, ecx
movzx edx, cx
movzx eax, ax
add eax, edx
add eax, 0xffff0001
mov dword [esp + 0x14], eax
mov eax, ecx
mov edx, dword [esp]
and eax, edx
add eax, edx
mov ebx, ecx
or ebx, edx
sub eax, ebx
not ebx
add ebx, ebx
sub eax, ebx
mov ebp, dword [0x4e56c4]
mov esi, dword [0x4e56c8]
mov edi, ebp
and edi, esi
mov ebx, ebp
or ebx, esi
not ebx
add ebx, edi
xor ebp, esi
lea esi, [ebx + ebp]
add esi, 1
sub eax, edx
cmp ecx, esi
cmovl eax, dword [esp + 0x14]
mov esi, dword [esp + 0x10]
add esi, 4
test ecx, ecx
jne 0x4ad6fe
add dword [esp + 4], 0x14
jmp 0x4ad661
jmp 0x4ad77e
mov eax, 6
jmp 0x4acfc5
mov eax, dword [esp]
add eax, 0x1268
push 0
push 0
push 0
push eax
call dword [esp + 0x18]
xor eax, eax
jmp 0x4acfc5