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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x110
cmp dword [ecx + 0x20], 0
je 0x40b15d
mov edi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406540
add esp, 4
mov edx, dword [edi + 0x10]
mov eax, dword [edi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xc], eax
movzx eax, byte [edi]
imul ecx, eax, 0xcd
shr ecx, 0xa
and ecx, 0xfffffffe
lea ecx, [ecx + ecx*4]
sub al, cl
movzx eax, al
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
mov byte [esp + 2], al
mov byte [esp + 3], 0
mov dword [esp + 0x10], edx
lea eax, [edx + 0x400]
push eax
call fcn.004095d0
add esp, 4
mov ebx, eax
mov dword [esp + 0x74], 0x9d9dae9c
mov byte [esp + 0x78], 0x20
mov dword [esp + 0x79], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
xor esi, 0xf7
mov edx, eax
and edx, 0x10
sub edx, esi
xor dl, byte [esp + ecx + 0x74]
add dl, 0xd3
mov byte [esp + ecx + 0x74], dl
inc ecx
add eax, 2
cmp ecx, 9
jne 0x40ace0
lea esi, [esp + 0x74]
mov ecx, edi
push 0x44a960
push esi
push ebx
call fcn.0040a520
mov dword [esp + 0x74], 0xb16a641c
mov eax, 0xff3b9cdd
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0xc46397]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xaf
mov byte [esp + eax + 0xc46397], cl
inc eax
cmp eax, 0xff3b9ce1
jne 0x40ad30
lea eax, [esp + 2]
mov dword [esp + 4], edi
mov ecx, edi
push eax
push esi
mov dword [esp + 0x10], ebx
push ebx
call fcn.0040a520
mov ebp, dword [str.Dvh8ui__111]
mov dword [esp + 0x74], 0xd97e6478
mov dword [esp + 0x78], 0
mov ecx, 0x63096b2f
mov edx, 0xd0
nop
nop
nop
movzx esi, byte [esp + ecx - 0x63096abb]
mov edi, ecx
or edi, esi
not esi
or esi, edx
and esi, edi
mov edi, esi
and edi, 0x14
xor esi, 0x14
lea eax, [esi + edi*2]
inc al
mov byte [esp + ecx - 0x63096abb], al
inc ecx
dec edx
cmp ecx, 0x63096b37
jne 0x40ad90
mov ecx, dword [esp + 4]
push ebp
lea eax, [esp + 0x78]
push eax
mov ebp, dword [esp + 0x10]
push ebp
call fcn.0040a520
mov dword [esp + 0x74], 0x9bac9caf
mov dword [esp + 0x78], 0xb487909f
mov dword [esp + 0x7c], 0x828d80b7
mov byte [esp + 0x80], 0x24
mov dword [esp + 0x81], 0
mov byte [esp + 0x85], 0
mov eax, 0xd077aa4a
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x2f88562a]
xor edx, eax
mov ecx, edx
or ecx, 0xfe
add ecx, edx
not edx
and edx, 1
add ecx, edx
add cl, 0x8f
mov byte [esp + eax + 0x2f88562a], cl
inc eax
cmp eax, 0xd077aa5c
jne 0x40ae10
mov dword [esp + 0x14], 0x7fea1e19
mov word [esp + 0x18], 0
mov eax, 0x6a
mov ecx, 0x95
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x56]
mov edi, eax
and edi, esi
lea edx, [esi + esi]
not edx
add edx, esi
and edx, ecx
or edx, edi
mov bl, 0xed
sub bl, dl
mov byte [esp + eax - 0x56], bl
inc eax
dec ecx
cmp eax, 0x70
jne 0x40ae60
lea edx, [esp + 0x14]
mov ecx, dword [esp + 4]
lea eax, [esp + 0x74]
push eax
push edx
push ebp
call fcn.0040a520
mov dword [esp + 0x74], 0xeee6e8ee
mov byte [esp + 0x78], 0xac
mov dword [esp + 0x79], 0
mov word [esp + 0x7d], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x74]
lea edx, [eax - 0x21b473e4]
xor edx, ecx
mov edi, edx
not edi
lea ecx, [edx + edi*2]
mov ebp, 0xfffffffe
sub ebp, ecx
mov ecx, ebp
and ecx, 0x71
mov ebx, ebp
and ebx, 2
mov esi, ebx
xor esi, 2
imul esi, ecx
or ecx, 2
imul ecx, ebx
lea edx, [edx + edi*2]
inc edx
and ebp, 0x8c
and edx, 0x73
or edx, ebp
add edx, esi
add edx, ecx
inc dl
mov byte [esp + eax + 0x74], dl
mov edx, eax
xor edx, 0xfffffffe
mov ecx, eax
or ecx, 1
and ecx, edx
mov edx, ecx
and edx, 0xd
mov esi, ecx
and esi, 2
or ecx, 2
imul ecx, esi
xor esi, 2
imul esi, edx
lea edx, [eax + eax]
and edx, 2
sub eax, edx
add eax, ecx
add eax, esi
inc eax
cmp eax, 0xb
jb 0x40aec0
mov edi, dword [esp + 4]
mov ecx, edi
push dword [esp + 0x10]
push dword [esp + 0x10]
lea eax, [esp + 0x7c]
push eax
mov ebp, dword [esp + 0x14]
push ebp
call fcn.0040a7f0
mov dword [esp + 0x14], 0xe91beb21
mov dword [esp + 0x18], 0xed1aef1a
mov dword [esp + 0x1c], 0xf100f307
mov dword [esp + 0x20], 0xf5c5f704
mov dword [esp + 0x24], 0xf905fb20
mov dword [esp + 0x28], 0xfd15ff08
mov dword [esp + 0x2c], 0x81a283c2
mov dword [esp + 0x30], 0x857d8773
mov dword [esp + 0x34], 0x897e8b68
mov dword [esp + 0x38], 0x8d7e8f67
mov dword [esp + 0x3c], 0x9164936b
mov dword [esp + 0x40], 0x95a79764
mov dword [esp + 0x44], 0x996b9b7e
mov dword [esp + 0x48], 0x9d6d9f6e
mov dword [esp + 0x4c], 0xa146a3af
mov dword [esp + 0x50], 0xa552a747
mov dword [esp + 0x54], 0xa997ab43
mov dword [esp + 0x58], 0xad48af88
mov dword [esp + 0x5c], 0xb149b35d
mov dword [esp + 0x60], 0xb552b742
mov dword [esp + 0x64], 0xb94cbb53
mov dword [esp + 0x68], 0xbd7dbf47
mov word [esp + 0x6c], 0x43bc
mov word [esp + 0x72], 0
mov dword [esp + 0x6e], 0
xor ecx, ecx
mov eax, 0xffffffff
nop
nop
nop
nop
nop
nop
mov edx, eax
or edx, 0x27
add edx, ecx
mov esi, ecx
xor esi, 0xa7
lea edx, [esi + edx*2]
add dl, 2
xor dl, byte [esp + ecx + 0x14]
add dl, 0xbd
mov byte [esp + ecx + 0x14], dl
lea edx, [ecx + 1]
dec eax
mov ecx, edx
cmp edx, 0x60
jne 0x40b030
movzx eax, word [esp + 0x14]
test ax, ax
lea edx, [esp + 0x74]
je 0x40b081
lea ecx, [esp + 0x16]
nop
nop
nop
mov word [edx], ax
add edx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40b070
mov word [edx], 0
movzx ecx, byte [edi + 0x60]
test cl, cl
je 0x40b0b1
lea eax, [edi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [edx], cx
add edx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40b0a0
mov dword [edx], 0xa000d
mov word [edx + 4], 0
mov eax, dword [edi + 0x80]
mov dword [esp + 0x14], 0x19b51bed
mov dword [esp + 0x18], 0xe551e7a8
mov word [esp + 0x1c], 0xe3e4
mov dword [esp + 0x1e], 0
mov byte [esp + 0x22], 0
mov ecx, 0x7b
mov edx, 0x84
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0x67]
mov esi, ecx
or esi, ebx
not ebx
or ebx, edx
and ebx, esi
add bl, 0x99
mov byte [esp + ecx - 0x67], bl
inc ecx
dec edx
cmp ecx, 0x8a
jne 0x40b100
lea ecx, [esp + 0x74]
push 0x493e0
push eax
push ebp
push 0
push 0
push ecx
lea eax, [esp + 0x2c]
push eax
call fcn.0040d650
add esp, 0x1c
mov ebx, eax
push ebp
call fcn.004095e0
add esp, 4
mov eax, dword [edi + 0x80]
add dword [edi + 4], eax
mov dword [edi + 0x80], 0
jmp 0x40b15f
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret