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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov dword [esp + 0x28], 0x6abe4e43
mov dword [esp + 0x2c], 0x46444044
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0x2c
mov word [esp + 0x31], 0
mov byte [esp + 0x33], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xb
ja 0x40acaf
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x28]
lea esi, [eax + 0xb7]
add eax, ecx
and esi, ecx
add esi, esi
sub eax, esi
add eax, 0xfa552eb7
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x6d
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0xc
jb 0x40ac70
lea eax, [esp + 0x1c]
lea esi, [esp + 0x28]
mov ebx, esi
mov edi, eax
mov ecx, 2
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x24]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0x24], cl
mov dword [esp + 0x28], 0x41d74789
mov dword [esp + 0x2c], 0x4dde43d6
mov dword [esp + 0x30], 0x49d84fa3
mov dword [esp + 0x34], 0x759d4bd4
mov dword [esp + 0x38], 0x71ed7788
mov dword [esp + 0x3c], 0x7d9d73e0
mov dword [esp + 0x40], 0x795e7fa6
mov dword [esp + 0x44], 0x65ea7b9b
mov dword [esp + 0x48], 0x61f267f4
mov dword [esp + 0x4c], 0x6d8f638b
mov dword [esp + 0x50], 0x69f26f8f
mov dword [esp + 0x54], 0x15fb6b83
mov dword [esp + 0x58], 0x11c71782
mov dword [esp + 0x5c], 0x1dc51388
mov dword [esp + 0x60], 0x19871f85
mov dword [esp + 0x64], 0x5cd1b81
mov dword [esp + 0x68], 0x19707ea
mov dword [esp + 0x6c], 0xd950392
mov dword [esp + 0x70], 0x9910fdb
mov dword [esp + 0x74], 0x359e0b9a
mov dword [esp + 0x78], 0x31a037db
mov dword [esp + 0x7c], 0x3da333dd
mov dword [esp + 0x80], 0x39d13fd0
mov dword [esp + 0x84], 0x250d3bd4
mov dword [esp + 0x88], 0x2126272e
mov dword [esp + 0x8c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x67
ja 0x40ae18
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
lea edi, [ecx + 0x720a4711]
add ecx, edx
add ecx, 0x720a4711
not edx
or edi, edx
sub edx, edi
lea ecx, [ecx + edx*2]
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 0xc]
mov edx, ecx
xor edx, 0x55
and ecx, 0x2a
add ecx, ecx
sub ecx, edx
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x68
jb 0x40add0
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0xc], 0x19b51b6d
mov dword [esp + 0x10], 0x65d167a8
mov word [esp + 0x14], 0x6364
mov dword [esp + 0x16], 0
mov word [esp + 0x1a], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xf
ja 0x40ae93
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0xc]
add edx, 0xb158e0bb
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0x59
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0x10
jb 0x40ae60
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040b930
add esp, 0x1c
test al, al
je 0x40afe4
mov word [esp + 0x28], 0x8695
mov byte [esp + 0x2a], 0x2a
mov word [esp + 0x2b], 0
mov byte [esp + 0x2d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40af29
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax - 0x6c7332b9]
mov edi, edx
and edi, ecx
xor edx, ecx
lea edx, [edx + edi*2]
add eax, 0x47
and eax, ecx
mov ecx, edx
not ecx
and ecx, eax
add ecx, eax
not eax
and eax, edx
sub eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x9d
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x40aee0
xor eax, eax
mov ecx, dword [esp + 4]
nop
movzx edx, byte [ecx + eax]
mov dh, byte [esp + eax + 0x28]
test dl, dl
je 0x40af41
inc eax
cmp dl, dh
je 0x40af30
mov al, 1
mov dword [esp + 8], eax
cmp dl, dh
je 0x40b1d2
mov dword [esp + 0x28], 0x77616473
mov dword [esp + 0x2c], 0x7686a6d
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40afa4
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
and eax, ecx
add eax, eax
sub edx, eax
add edx, 0xcaa88700
mov dword [esp + 0xc], edx
mov eax, dword [esp + 0xc]
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40af70
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40afeb
mov edx, esi
mov ecx, eax
jmp 0x40afc7
movzx ebx, byte [edx]
test bl, bl
je 0x40afed
mov bh, byte [eax]
test bh, bh
je 0x40b1ca
inc eax
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40afde
mov ecx, edi
mov eax, edi
je 0x40afc0
mov edx, esi
jmp 0x40afc0
xor eax, eax
jmp 0x40b1e2
mov ecx, eax
test ecx, ecx
je 0x40b1ca
mov dword [esp + 0x28], 0x7a73786a
mov dword [esp + 0x2c], 0x5743bba1
mov dword [esp + 0x30], 0x87804e53
mov dword [esp + 0x34], 0x5e46445e
mov dword [esp + 0x38], 0xaf88944d
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x13
ja 0x40b05e
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x95f07eda
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xbe
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x14
jb 0x40b030
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40b0a4
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40b087
movzx ecx, byte [edx]
test cl, cl
je 0x40b0a6
mov ch, byte [eax]
test ch, ch
je 0x40b1ca
inc eax
inc edx
lea ebx, [esi + 1]
cmp ch, cl
je 0x40b09e
mov esi, ebx
mov eax, ebx
je 0x40b080
mov edx, edi
jmp 0x40b080
mov esi, eax
test esi, esi
je 0x40b1ca
mov word [esp + 0x28], 0x711e
mov byte [esp + 0x2a], 0x3e
mov dword [esp + 0x2b], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 6
ja 0x40b128
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx edx, byte [esp + ecx + 0x28]
mov ecx, 0xca
sub ecx, eax
sub ecx, edx
lea edi, [eax + edx]
add edi, 0x648ba735
add eax, 0x35
and eax, edx
and ecx, eax
add ecx, eax
not eax
and eax, edi
sub eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xf7
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 7
jb 0x40b0e0
movzx eax, byte [esp + 0x28]
test al, al
je 0x40b160
add esi, 0x13
lea ebp, [esp + 0x28]
mov ecx, ebp
mov edx, esi
mov edi, esi
jmp 0x40b147
movzx eax, byte [ecx]
test al, al
je 0x40b171
mov ah, byte [edx]
test ah, ah
je 0x40b1ca
inc edx
inc ecx
lea ebx, [edi + 1]
cmp ah, al
je 0x40b15a
mov edi, ebx
mov edx, ebx
je 0x40b140
mov ecx, ebp
jmp 0x40b140
mov byte [0x44aa3c], 1
mov eax, 0x44aa3e
jmp 0x40b1f3
test edi, edi
je 0x40b1ca
mov byte [0x44aa3c], 1
mov dword [esp + 0x28], 0
mov eax, 0x44aa3e
cmp esi, edi
jae 0x40b1f3
xor ebx, ebx
lea ebp, [esp + 0x28]
cmp byte [esi], 0
je 0x40b1ed
push ebp
push edi
push esi
call fcn.0040c850
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x44aa3e], dx
cmp ebx, 0x1fb
ja 0x40b1c2
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40b193
lea eax, [ecx + 0x44aa3e]
jmp 0x40b1f3
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.0043a340
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x44aa3e]
mov word [eax], 0
jmp 0x40b1d2