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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10c
cmp dword [ecx + 0x20], 0
je 0x409c7d
mov esi, ecx
lea eax, [ecx + 0x10]
push eax
call fcn.004061b0
add esp, 4
mov edx, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 8], eax
movzx eax, byte [esi]
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 + 0xc], edx
lea eax, [edx + 0x400]
push eax
call fcn.004081b0
add esp, 4
mov dword [esp + 0x70], 0xb5a5b6a4
mov byte [esp + 0x74], 0x50
mov word [esp + 0x75], 0
mov byte [esp + 0x77], 0
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, edi
xor edx, 0xc8b64ef2
mov ecx, edi
or ecx, 5
and ecx, edx
mov edx, edi
and edx, 5
mov ebx, ecx
and ebx, 2
or ecx, 2
imul ecx, ebx
xor ebx, 2
imul ebx, edx
mov edx, edi
xor edx, 0xd
add edx, ecx
add edx, ebx
xor dl, byte [esp + edi + 0x70]
add dl, 0xbf
mov byte [esp + edi + 0x70], dl
inc edi
cmp edi, 8
jne 0x409860
lea ebx, [esp + 0x70]
mov ecx, esi
push 0x447d78
push ebx
mov dword [esp + 0xc], eax
push eax
call fcn.00409110
mov dword [esp + 0x70], 0xf6a7078
mov edi, 0xd24d0731
mov ecx, 0xa49a0e62
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebp, byte [esp + edi + 0x2db2f93f]
mov edx, ecx
and edx, 0x48a0604
mov eax, edi
xor eax, 0x87e56b02
add eax, edx
mov edx, 0x30
sub edx, eax
add eax, 0xcf
xor edx, eax
and edx, ebp
xor edx, eax
add dl, 0xf6
mov byte [esp + edi + 0x2db2f93f], dl
inc edi
add ecx, 2
cmp edi, 0xd24d0735
jne 0x4098d0
lea eax, [esp + 2]
mov ecx, esi
push eax
push ebx
push dword [esp + 0xc]
call fcn.00409110
mov eax, dword [str.tLYMe5__1]
mov dword [esp + 0x70], 0x57baa0bc
mov word [esp + 0x74], 0
mov ebp, 0x71
mov edx, 0x8e
movzx edi, byte [esp + edx - 0x1e]
mov ecx, ebp
xor ecx, edx
and ecx, edi
xor ecx, edx
add cl, 0x3a
mov byte [esp + edx - 0x1e], cl
dec ebp
inc edx
cmp ebp, 0x6b
jne 0x409940
mov ecx, esi
push eax
push ebx
push dword [esp + 0xc]
call fcn.00409110
mov dword [esp + 0x70], 0x879c8493
mov dword [esp + 0x74], 0x9483988b
mov dword [esp + 0x78], 0x9e9d988b
mov byte [esp + 0x7c], 0x3c
mov dword [esp + 0x7d], 0
mov byte [esp + 0x81], 0
mov eax, 0xf92dc148
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x6d23f28]
xor ecx, eax
mov edx, ecx
and edx, 0x20090195
mov edi, ecx
and edi, 2
mov ebp, edi
xor ebp, 2
imul ebp, edx
or edx, 2
imul edx, edi
xor ecx, 0x221b3997
add ecx, ebp
add ecx, edx
mov edx, ecx
or edx, 1
add edx, ecx
not ecx
or ecx, 1
add edx, ecx
inc dl
mov byte [esp + eax + 0x6d23f28], dl
inc eax
cmp eax, 0xf92dc15a
jne 0x4099a0
mov dword [esp + 0x10], 0xd7aaa6a9
mov eax, 0xa0bfa9ce
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x5f405642]
xor ecx, eax
mov edx, ecx
not edx
and edx, 7
and ecx, 0xf8
sub ecx, edx
inc cl
mov byte [esp + eax + 0x5f405642], cl
inc eax
cmp eax, 0xa0bfa9d2
jne 0x409a00
lea eax, [esp + 0x10]
mov ecx, esi
push ebx
push eax
mov ebp, dword [esp + 0xc]
push ebp
call fcn.00409110
mov dword [esp + 0x70], 0xb6a2a4aa
mov byte [esp + 0x74], 0x50
mov dword [esp + 0x75], 0
mov dword [esp + 0x78], 0
mov eax, 0xa8e2e0d
nop
nop
movzx ecx, byte [esp + eax - 0xa8e2d9d]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
and edx, 0x3e
xor ecx, 0xbe
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax - 0xa8e2d9d], cl
inc eax
cmp eax, 0xa8e2e19
jne 0x409a60
mov ecx, esi
push dword [esp + 0xc]
push dword [esp + 0xc]
push ebx
push ebp
call fcn.00409390
mov dword [esp + 0x10], 0x1f707c9
mov dword [esp + 0x14], 0xdfe03f6
mov dword [esp + 0x18], 0x9f80fe3
mov dword [esp + 0x1c], 0x153d0bf4
mov dword [esp + 0x20], 0x11ed17c8
mov dword [esp + 0x24], 0x1dfd13e0
mov dword [esp + 0x28], 0x193e1f26
mov dword [esp + 0x2c], 0x25e51bef
mov dword [esp + 0x30], 0x21da27d0
mov dword [esp + 0x34], 0x2dd223cb
mov dword [esp + 0x38], 0x29dc2fcf
mov dword [esp + 0x3c], 0x351b2bd4
mov dword [esp + 0x40], 0x31c737da
mov dword [esp + 0x44], 0x3dc533c2
mov dword [esp + 0x48], 0x39d23f0b
mov dword [esp + 0x4c], 0xc5c63bdb
mov dword [esp + 0x50], 0xc103c727
mov dword [esp + 0x54], 0xcd20c3e0
mov dword [esp + 0x58], 0xc931cf3d
mov dword [esp + 0x5c], 0xd526cb3e
mov dword [esp + 0x60], 0xd124d737
mov dword [esp + 0x64], 0xdd15d32b
mov word [esp + 0x68], 0xdfdc
mov word [esp + 0x6e], 0
mov dword [esp + 0x6a], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xc1
xor cl, byte [esp + eax + 0x10]
add cl, 0x3b
mov byte [esp + eax + 0x10], cl
inc eax
cmp eax, 0x60
jne 0x409b70
movzx eax, word [esp + 0x10]
test ax, ax
je 0x409bb1
lea ebx, [esp + 0x70]
lea ecx, [esp + 0x12]
nop
nop
nop
nop
nop
nop
nop
nop
mov word [ebx], ax
add ebx, 2
movzx eax, word [ecx]
add ecx, 2
test ax, ax
jne 0x409ba0
mov word [ebx], 0
movzx ecx, byte [esi + 0x60]
test cl, cl
je 0x409be1
lea eax, [esi + 0x61]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movsx ecx, cl
mov word [ebx], cx
add ebx, 2
movzx ecx, byte [eax]
inc eax
test cl, cl
jne 0x409bd0
mov dword [ebx], 0xa000d
mov word [ebx + 4], 0
mov eax, dword [esi + 0x80]
mov dword [esp + 0x10], 0xe303e1df
mov dword [esp + 0x14], 0xe71fe514
mov word [esp + 0x18], 0xf9f8
mov dword [esp + 0x1a], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
xor edi, 0x58
mov ebx, ecx
and ebx, 0xe
sub ebx, edi
xor bl, byte [esp + edx + 0x10]
add bl, 0xb8
mov byte [esp + edx + 0x10], bl
inc edx
add ecx, 2
cmp edx, 0xe
jne 0x409c20
lea ecx, [esp + 0x70]
push 0x493e0
push eax
push ebp
push 0
push 0
push ecx
lea eax, [esp + 0x28]
push eax
call fcn.0040c0b0
add esp, 0x1c
mov ebx, eax
push ebp
call fcn.004081c0
add esp, 4
mov eax, dword [esi + 0x80]
add dword [esi + 4], eax
mov dword [esi + 0x80], 0
jmp 0x409c7f
mov bl, 1
mov eax, ebx
add esp, 0x10c
pop esi
pop edi
pop ebx
pop ebp
ret