Function at 0x40a2f0
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 0x40a873
mov edi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.00406860
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 + 6], al
mov byte [esp + 7], 0
mov dword [esp + 0x10], edx
lea eax, [edx + 0x400]
push eax
call fcn.00408ac0
add esp, 4
mov dword [esp], eax
mov dword [esp + 0x74], 0x3f3b0e38
mov byte [esp + 0x78], 0x9c
mov dword [esp + 0x79], 0
mov dword [esp + 0x7c], 0
xor eax, eax
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x74]
lea esi, [eax + 0x24]
or esi, edx
not edx
mov ecx, 0xdb
sub ecx, eax
or ecx, edx
and ecx, esi
add cl, 0x4c
mov byte [esp + eax + 0x74], cl
mov edx, eax
xor edx, 0xfffffffe
mov ecx, eax
or ecx, 1
and ecx, edx
mov edx, ecx
and edx, 2
mov esi, ecx
or ecx, 2
imul ecx, edx
xor edx, 2
and esi, 0xd
imul esi, edx
add ecx, esi
mov edx, ecx
and edx, eax
xor ecx, eax
xor ecx, 1
lea eax, [ecx + edx*2]
cmp eax, 0xc
jb 0x40a380
lea eax, [esp + 0x74]
mov dword [esp + 8], edi
mov ecx, edi
push 0x44c998
push eax
push dword [esp + 8]
call fcn.00409b90
mov dword [esp + 0x74], 0x117a848c
mov word [esp + 0x78], 0
mov edi, 0x34871505
mov ecx, 0xcb78eafa
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edi - 0x34871491]
mov eax, edi
xor eax, ebp
mov edx, edi
and edx, ebp
or eax, ecx
not eax
or eax, edx
mov ebx, eax
and ebx, 0x3487150d
mov esi, eax
and esi, 2
mov edx, eax
or edx, 0xfffffffd
inc edx
imul edx, ebx
or eax, 2
imul eax, esi
lea esi, [edi + ebp]
add edx, ebp
sub edx, eax
add edx, edi
and esi, 1
or edx, 1
add edx, esi
add dl, 0xe6
mov byte [esp + edi - 0x34871491], dl
inc edi
dec ecx
cmp edi, 0x3487150b
jne 0x40a410
lea eax, [esp + 6]
mov ecx, dword [esp + 8]
push eax
lea eax, [esp + 0x78]
push eax
push dword [esp + 8]
call fcn.00409b90
mov edi, dword [str.Dvh8ui__test]
mov dword [esp + 0x74], 0x13aea8a4
mov word [esp + 0x78], 0
mov byte [esp + 0x7a], 0
mov ebp, 0xff51ca7c
nop
nop
nop
movzx ebx, byte [esp + ebp + 0xae35f8]
mov edx, ebx
and edx, ebp
mov eax, edx
or al, 0xfd
inc al
mov ecx, edx
and cl, 0xfd
mul cl
mov ecx, eax
add cl, bl
mov eax, edx
shr al, 1
and al, 1
or dl, 2
mul dl
add al, al
sub cl, al
movzx eax, cl
add eax, ebp
add al, 0x94
mov byte [esp + ebp + 0xae35f8], al
inc ebp
cmp ebp, 0xff51ca83
jne 0x40a4a0
mov ebp, dword [esp + 8]
mov ecx, ebp
push edi
lea edi, [esp + 0x78]
push edi
push dword [esp + 8]
call fcn.00409b90
mov dword [esp + 0x74], 0x75807889
mov dword [esp + 0x78], 0x80758c71
mov dword [esp + 0x7c], 0x6e8f7481
mov byte [esp + 0x80], 8
mov dword [esp + 0x81], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x74]
mov ecx, eax
xor ecx, 0x6592407a
mov esi, eax
or esi, 0x9a6dbf85
and ecx, esi
add ecx, esi
xor ecx, edx
mov edx, ecx
and edx, 0x66
add edx, edx
xor ecx, 0x99
sub edx, ecx
mov byte [esp + eax + 0x74], dl
inc eax
cmp eax, 0x11
jne 0x40a530
mov dword [esp + 0x14], 0x930e3231
mov dword [esp + 0x18], 0
mov eax, 0x7f803824
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x7f803810]
lea edx, [eax - 0x7f803800]
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
and edx, 0x4b
xor ecx, 0x4b
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax - 0x7f803810], cl
inc eax
cmp eax, 0x7f80382c
jne 0x40a580
lea eax, [esp + 0x14]
mov ecx, ebp
push edi
push eax
push dword [esp + 8]
call fcn.00409b90
mov dword [esp + 0x74], 0xaad2d0d2
mov byte [esp + 0x78], 0x4c
mov dword [esp + 0x79], 0
mov byte [esp + 0x7d], 0
xor eax, eax
nop
movzx edx, byte [esp + eax + 0x74]
mov esi, 0x6d
sub esi, eax
lea ecx, [eax + 0x92]
xor ecx, esi
and ecx, edx
xor ecx, esi
mov dl, 0x25
sub dl, cl
mov byte [esp + eax + 0x74], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xa
jb 0x40a5e0
mov ecx, ebp
push dword [esp + 0x10]
push dword [esp + 0x10]
push edi
push dword [esp + 0xc]
call fcn.00409e40
mov dword [esp + 0x14], 0xf96bfbc1
mov dword [esp + 0x18], 0xfd6aff6a
mov dword [esp + 0x1c], 0xf160f367
mov dword [esp + 0x20], 0xf525f764
mov dword [esp + 0x24], 0xe965eb40
mov dword [esp + 0x28], 0xed75ef78
mov dword [esp + 0x2c], 0xe102e322
mov dword [esp + 0x30], 0xe56de773
mov dword [esp + 0x34], 0xd94edb78
mov dword [esp + 0x38], 0xdd4edf47
mov dword [esp + 0x3c], 0xd144d37b
mov dword [esp + 0x40], 0xd507d744
mov dword [esp + 0x44], 0xc95bcb4e
mov dword [esp + 0x48], 0xcd5dcf5e
mov dword [esp + 0x4c], 0xc166c31f
mov dword [esp + 0x50], 0xc552c767
mov dword [esp + 0x54], 0xb977bb63
mov dword [esp + 0x58], 0xbd18bf58
mov dword [esp + 0x5c], 0xb139b32d
mov dword [esp + 0x60], 0xb512b722
mov dword [esp + 0x64], 0xa93cab13
mov dword [esp + 0x68], 0xad6daf27
mov word [esp + 0x6c], 0xa3ac
mov byte [esp + 0x70], 0
mov word [esp + 0x6e], 0
mov eax, 0x7f
mov ecx, 0x80
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x6b]
mov edx, eax
xor edx, ecx
and edx, esi
xor edx, ecx
mov bl, 0x84
sub bl, dl
mov byte [esp + eax - 0x6b], bl
inc eax
dec ecx
cmp eax, 0xdc
jne 0x40a700
movzx eax, word [esp + 0x14]
test ax, ax
je 0x40a741
lea edi, [esp + 0x74]
lea ecx, [esp + 0x16]
mov word [edi], ax
add edi, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x40a730
mov word [edi], 0
movzx ecx, byte [ebp + 0x60]
test cl, cl
je 0x40a771
lea eax, [ebp + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [edi], cx
add edi, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x40a760
mov dword [edi], 0xa000d
mov word [edi + 4], 0
mov ebp, dword [ebp + 0x80]
mov dword [esp + 0x14], 0xe105e7d5
mov dword [esp + 0x18], 0xfd19e310
mov word [esp + 0x1c], 0xfffc
mov dword [esp + 0x1e], 0
mov byte [esp + 0x22], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx + 0x14]
mov eax, ecx
and eax, 0x12
mov ebx, edx
xor ebx, 0xa9e491a9
add ebx, eax
mov eax, esi
not eax
or eax, 0xeedd0560
lea edi, [esi + eax]
inc edi
and esi, 0xffffff9f
xor esi, 0x1122fa9f
or edi, esi
mov eax, ebx
xor eax, 0x1122fa9f
mov esi, ebx
or esi, 0xa8c40160
and esi, eax
and ebx, 0x120909f
or ebx, 0x84090420
xor ebx, esi
xor ebx, edi
mov eax, ebx
xor eax, 0x952bfebf
xor ebx, 0xf2
and ebx, eax
or eax, 0xb2
add eax, ebx
inc al
mov byte [esp + edx + 0x14], al
inc edx
add ecx, 2
cmp edx, 0xf
jne 0x40a7b0
lea eax, [esp + 0x74]
push 0x493e0
push ebp
mov esi, dword [esp + 8]
push esi
push 0
push 0
push eax
lea eax, [esp + 0x2c]
push eax
call fcn.0040cbd0
add esp, 0x1c
mov ebx, eax
push esi
call fcn.00408ad0
add esp, 4
mov esi, dword [esp + 8]
mov eax, dword [esi + 4]
mov ecx, dword [esi + 0x80]
mov edx, ecx
and edx, eax
xor ecx, eax
lea eax, [ecx + edx*2]
mov dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x40a875
mov bl, 1
mov eax, ebx
add esp, 0x110
pop esi
pop edi
pop ebx
pop ebp
ret