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

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x1a0
mov eax, dword [0x44da78]
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], 0x3bb018f
mov dword [esp + 0x1c], 0x1fa41db4
mov dword [esp + 0x20], 0x1b941992
mov dword [esp + 0x24], 0x176215aa
mov dword [esp + 0x28], 0x13a411aa
mov dword [esp + 0x2c], 0x6f6c6da6
xor esi, esi
mov eax, 0xffffffff
nop
mov dword [esp], eax
movzx edx, byte [esp + esi + 0x18]
mov edi, esi
and edi, 0xb
mov eax, dword [esp]
or eax, 0xfffffffd
lea ecx, [edi + eax]
inc ecx
mov eax, esi
and eax, 9
sub eax, edi
add eax, 2
imul eax, ecx
mov ecx, esi
and ecx, 2
xor edi, 2
or edi, ecx
imul edi, ecx
add edi, eax
mov eax, esi
xor eax, 0x5554082b
mov ecx, edi
and ecx, eax
xor eax, edi
lea eax, [eax + ecx*2]
mov ecx, edx
not ecx
lea edi, [edx + ecx*2]
inc edi
and edi, eax
lea ebx, [eax + eax]
not ebx
add ebx, eax
mov ecx, eax
and ecx, 0x54fa64a6
and ebx, 0xab059b59
or ebx, ecx
xor ebx, eax
xor ebx, 0x54fa64a6
and ebx, eax
lea eax, [ebx + ebx]
not eax
add eax, ebx
mov ecx, edx
mov dword [esp + 8], edx
add edx, edx
not edx
add edx, ecx
lea ecx, [edx + edx]
not ecx
add ecx, edx
or edx, ebx
not edx
or edx, edi
or ecx, dword [esp + 8]
and ecx, eax
or ecx, edx
mov dword [esp + 0x11c], ecx
mov eax, dword [esp + 0x11c]
mov ecx, eax
or ecx, 0xd2
and eax, 0xd2
add eax, ecx
inc al
mov byte [esp + esi + 0x18], al
mov eax, dword [esp]
inc esi
dec eax
cmp esi, 0x18
jne 0x40ac60
lea esi, [esp + 0x18]
push 0x800
push 0
push esi
call dword [esp + 0x1c]
mov ecx, 0x44da40
push eax
call fcn.0043dcc0
xor ebx, ebx
test al, al
je 0x40b4b8
push 0xd16c9e6b
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da48], eax
push 0x2b39326b
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da4c], eax
push 0x20eddf4
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da50], eax
push 0x6f420210
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da54], eax
push 0xbb4ac2a9
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da58], eax
push 0xe03c21ff
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da5c], eax
push 0xb35fc6e6
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da60], eax
push 0xe3a9b6db
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da64], eax
push 0xe81e9fc0
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da68], eax
push 0x70f53c13
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da6c], eax
push 0xb54b293a
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da70], eax
push 0x9b73555b
push dword [0x44da40]
call fcn.00440d30
add esp, 8
mov dword [0x44da74], eax
lea edi, [esp + 0x11c]
mov eax, edi
not eax
mov dword [esp + 8], eax
nop
nop
nop
nop
nop
push edi
push dword [ebx + 0x4455ec]
call fcn.004392d0
add esp, 8
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp byte [esp + eax + 0x11c], 0
lea eax, [eax + 1]
jne 0x40aea0
lea ecx, [esp + 0x11b]
add eax, ecx
mov ecx, eax
xor ecx, edi
and eax, dword [esp + 8]
add eax, eax
sub eax, ecx
mov dword [esp + 4], 0
mov ecx, esi
test eax, eax
jle 0x40af34
mov dword [esp], ebx
lea esi, [esp + eax]
add esi, 0x11c
xor ebx, ebx
nop
nop
cmp byte [edi], 0
je 0x40af20
lea eax, [esp + 4]
push eax
push esi
push edi
call fcn.0040dd70
add esp, 0xc
movzx edx, word [esp + 4]
lea ecx, [ebx + 2]
mov word [esp + ebx + 0x18], dx
cmp ebx, 0xfb
ja 0x40af11
add edi, eax
mov ebx, ecx
cmp edi, esi
jb 0x40aee0
add ecx, esp
add ecx, 0x18
jmp 0x40af26
lea ecx, [esp + ebx]
add ecx, 0x18
mov ebx, dword [esp]
lea esi, [esp + 0x18]
lea edi, [esp + 0x11c]
mov word [ecx], 0
push esi
call fcn.0040b4d0
add esp, 4
test al, al
jne 0x40b0da
add ebx, 4
cmp ebx, 0x24
jne 0x40ae80
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessVersion]
mov dword [esp + 0xc], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x18], 0xab10a50e
mov dword [esp + 0x1c], 0xaf18a91e
mov dword [esp + 0x20], 0xb352ad1b
mov dword [esp + 0x24], 0xb741b143
mov dword [esp + 0x28], 0xbb00b503
mov dword [esp + 0x2c], 0xbf1fb911
mov dword [esp + 0x30], 0x8319bd0d
mov dword [esp + 0x34], 0x87338133
mov dword [esp + 0x38], 0x8b3f8535
mov dword [esp + 0x3c], 0x8f278938
mov dword [esp + 0x40], 0x93338d3a
mov dword [esp + 0x44], 0x97359160
mov dword [esp + 0x48], 0x9b279527
mov dword [esp + 0x4c], 0x9f28996b
mov dword [esp + 0x50], 0x632d9d28
mov dword [esp + 0x54], 0x67cf61c8
mov dword [esp + 0x58], 0x6bcf65ca
mov dword [esp + 0x5c], 0x6f9969df
mov dword [esp + 0x60], 0x73966d97
mov dword [esp + 0x64], 0x778a7189
mov dword [esp + 0x68], 0x7b837581
mov dword [esp + 0x6c], 0x7f877985
mov dword [esp + 0x70], 0x438a7d87
mov dword [esp + 0x74], 0x47b541b6
mov dword [esp + 0x78], 0x4bb345b3
mov dword [esp + 0x7c], 0x4fb849b5
mov dword [esp + 0x80], 0x534c4dbe
mov dword [esp + 0x8b], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x84], 0
xor eax, eax
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x18]
mov edx, eax
and edx, 0x44
mov esi, eax
and esi, 0x3a
xor esi, 0x36c682bb
sub edx, esi
xor edx, ecx
mov dword [esp + 0x11c], edx
mov ecx, dword [esp + 0x11c]
add cl, 0x1d
mov byte [esp + eax + 0x18], cl
lea ecx, [eax + 1]
cmp ecx, 0x77
je 0x40b114
movzx edx, byte [esp + eax + 0x19]
mov esi, ecx
and esi, 0x45
lea edi, [ecx - 1]
and edi, 0x3a
xor edi, 0x36c682bb
sub esi, edi
xor esi, edx
mov dword [esp + 0x11c], esi
mov edx, dword [esp + 0x11c]
add dl, 0x1d
mov byte [esp + eax + 0x19], dl
inc ecx
mov eax, ecx
jmp 0x40b070
movzx eax, word [esp + 0x18]
test ax, ax
je 0x40b24e
mov ecx, 2
nop
nop
nop
mov word [ecx + 0x44da7a], ax
movzx eax, word [esp + ecx + 0x18]
add ecx, 2
test ax, ax
jne 0x40b0f0
mov word [ecx + 0x44da7a], 0
mov bl, 1
jmp 0x40b4b8
lea eax, [esp + 0x14]
lea ecx, [esp + 0xc]
lea edi, [esp + 0x18]
push eax
push ecx
push edi
call fcn.0040bc50
add esp, 0xc
xor ebx, ebx
test al, al
je 0x40b4b8
mov dword [esp + 0x18], 0xe2d2da80
mov dword [esp + 0x1c], 0xdbe1a1d2
mov dword [esp + 0x20], 0xf6add2e5
mov dword [esp + 0x24], 0xab9998de
mov dword [esp + 0x28], 0x90ae9ca9
mov dword [esp + 0x2c], 0xa0a094a0
mov dword [esp + 0x30], 0x888ba7a7
mov dword [esp + 0x34], 0x8ab388ba
mov word [esp + 0x38], 0xefca
mov byte [esp + 0x3a], 0x22
mov dword [esp + 0x3b], 0
mov dword [esp + 0x3f], 0
mov dword [esp + 0x43], 0
mov byte [esp + 0x47], 0
nop
nop
movzx eax, byte [esp + ebx + 0x18]
mov ecx, ebx
and ecx, 0x35
mov edx, ebx
and edx, 0xa
xor edx, 0xe8d0ff4a
sub ecx, edx
xor ecx, eax
mov dword [esp + 0x11c], ecx
mov ecx, dword [esp + 0x11c]
mov eax, ecx
not eax
mov esi, ecx
and esi, 0x2000001a
mov edx, eax
or edx, 0xa24904fa
add edx, ecx
add edx, 0x5db6fb06
xor ecx, 0xa24904fa
and ecx, edx
mov edx, ecx
not edx
and edx, eax
and eax, 0x824904e0
or eax, esi
xor eax, ecx
xor eax, 0x2000001a
and eax, ecx
lea ecx, [eax + eax]
and edx, 0xfa
or edx, eax
sub ecx, edx
mov byte [esp + ebx + 0x18], cl
inc ebx
cmp ebx, 0x30
jne 0x40b1a0
mov ecx, dword [esp + 0xc]
movzx ebx, byte [esp + 0x18]
test bl, bl
je 0x40b25e
mov eax, ecx
mov edx, edi
jmp 0x40b23c
inc eax
mov edx, edi
mov ecx, eax
movzx ebx, byte [edx]
test bl, bl
je 0x40b260
mov bh, byte [ecx]
test bh, bh
je 0x40b4aa
cmp bh, bl
jne 0x40b230
inc ecx
inc edx
jmp 0x40b235
mov word [0x44da7c], 0
mov bl, 1
jmp 0x40b4b8
mov eax, ecx
test eax, eax
je 0x40b4aa
mov dword [esp + 0x18], 0x339c4f2
mov dword [esp + 0x1c], 0x8ff2030d
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
mov ecx, 0x17d61719
nop
nop
nop
movzx edx, byte [esp + ecx - 0x17d61701]
xor edx, ecx
mov dword [esp + 0x11c], edx
mov edx, dword [esp + 0x11c]
add edx, 0xae6c351a
mov esi, edx
and esi, 0x51
xor edx, 0x51
lea edx, [edx + esi*2]
add dl, 0xe6
mov byte [esp + ecx - 0x17d61701], dl
inc ecx
cmp ecx, 0x17d61729
jne 0x40b290
movzx ebx, byte [esp + 0x18]
mov ecx, eax
test bl, bl
je 0x40b30e
lea edx, [esp + 0x18]
mov esi, eax
mov ecx, eax
mov edi, edx
jmp 0x40b2fc
inc ecx
mov edi, edx
mov esi, ecx
movzx ebx, byte [edi]
test bl, bl
je 0x40b30e
mov bh, byte [esi]
test bh, bh
je 0x40b4aa
cmp bh, bl
jne 0x40b2f0
inc esi
inc edi
jmp 0x40b2f5
test ecx, ecx
je 0x40b4aa
mov byte [ecx], 0
lea esi, [eax + 0x22]
add eax, 0x21
mov ecx, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
inc eax
cmp byte [ecx], 0
lea ecx, [ecx + 1]
jne 0x40b330
mov ecx, eax
xor ecx, esi
mov edx, esi
not edx
and edx, eax
add edx, edx
sub edx, ecx
mov dword [esp], edx
jne 0x40b3e9
mov eax, dword [esp]
mov byte [esp + eax + 0x11c], 0
xor eax, eax
nop
nop
nop
cmp byte [esp + eax + 0x11c], 0
lea eax, [eax + 1]
jne 0x40b360
lea ecx, [esp + eax]
add ecx, 0x11b
lea esi, [esp + 0x11c]
mov eax, esi
not eax
and eax, ecx
xor ecx, esi
add eax, eax
sub eax, ecx
mov dword [esp + 4], 0
lea edx, [esp + 0x18]
mov ecx, edx
test eax, eax
jle 0x40b465
lea ebx, [esp + eax]
add ebx, 0x11c
xor edi, edi
nop
nop
nop
nop
nop
nop
cmp byte [esi], 0
je 0x40b45b
lea eax, [esp + 4]
push eax
push ebx
push esi
call fcn.0040dd70
add esp, 0xc
movzx edx, word [esp + 4]
lea ecx, [edi + 2]
mov word [esp + edi + 0x18], dx
cmp edi, 0x7b
ja 0x40b3e2
add esi, eax
mov edi, ecx
cmp esi, ebx
jb 0x40b3b0
add ecx, esp
add ecx, 0x18
jmp 0x40b461
mov ebx, dword [esp]
cmp ebx, 1
adc ebx, 0
xor edi, edi
jmp 0x40b410
mov byte [esp + edi + 0x11c], cl
inc edi
cmp ebx, edi
je 0x40b350
movzx ecx, byte [esi + edi]
mov eax, ecx
add al, 0x9f
cmp al, 0x19
ja 0x40b400
movzx eax, cl
mov ecx, eax
xor ecx, 0x61
and eax, 0x1e
add eax, eax
sub eax, ecx
mov ecx, eax
xor ecx, 0xfffffff4
and eax, 0xfffffff4
lea ecx, [ecx + eax*2]
add ecx, 0x1b
mov eax, ecx
mov edx, 0x4ec4ec4f
imul edx
mov eax, edx
shr eax, 0x1f
shr edx, 3
add edx, eax
lea eax, [edx + edx*4]
lea eax, [eax + eax*4]
add eax, edx
sub ecx, eax
add cl, 0x61
jmp 0x40b400
lea ecx, [esp + edi]
add ecx, 0x18
lea edx, [esp + 0x18]
mov word [ecx], 0
push edx
call fcn.0040b4d0
add esp, 4
test al, al
je 0x40b4aa
movzx ecx, word [esp + 0x18]
mov eax, 0x44da7c
test cx, cx
je 0x40b4a1
lea edx, [esp + 0x1a]
nop
nop
nop
nop
nop
nop
mov word [eax], cx
add eax, 2
movzx ecx, word [edx]
add edx, 2
test cx, cx
jne 0x40b490
mov word [eax], 0
mov bl, 1
jmp 0x40b4ac
xor ebx, ebx
push dword [esp + 0xc]
call fcn.0043c6e0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret