Function at 0x409bf0
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, 0xfffffff0
sub esp, 0x100
cmp dword [ecx + 0x20], 0
je 0x40a2d6
mov esi, ecx
movzx eax, byte [ecx]
mov byte [esp + 0xf], 0
test eax, eax
je 0x409c45
cmp al, 0x64
jb 0x409c54
lea ecx, [eax + eax*4]
lea ecx, [eax + ecx*8]
movzx edx, cx
shr edx, 0xc
imul ecx, edx, 0x64
sub al, cl
movzx eax, al
movzx eax, word [eax + eax + 0x4367f4]
mov word [esp + 0xd], ax
mov ecx, 1
mov eax, edx
jmp 0x409c5d
lea eax, [esp + 0xe]
mov dword [esp + 0x3c], eax
mov byte [esp + 0xe], 0x30
jmp 0x409c89
mov ecx, 3
cmp al, 9
ja 0x409c74
movzx eax, byte [eax + str.0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ]
lea edx, [esp + ecx]
add edx, 0xb
mov dword [esp + 0x3c], edx
mov byte [esp + ecx + 0xb], al
jmp 0x409c89
movzx eax, word [eax + eax + 0x4367f4]
lea ecx, [esp + 0xd]
mov dword [esp + 0x3c], ecx
mov word [esp + 0xd], ax
lea eax, [esi + 0x10]
push eax
call fcn.00406720
add esp, 4
mov edi, dword [esi + 0x10]
mov eax, dword [esi + 0x58]
mov eax, dword [eax + 0x48]
mov dword [esp + 0xd0], eax
lea ebx, [esp + 0xdb]
push ebx
call fcn.0042d310
add esp, 4
mov dword [esp + 0xd4], edi
lea eax, [edi + 0x800]
push eax
call fcn.004088d0
add esp, 4
mov edi, eax
mov dword [esp + 0x40], 0xe7dbc6d4
mov byte [esp + 0x44], 0x40
mov dword [esp + 0x45], 0
mov dword [esp + 0x49], 0
mov dword [esp + 0x4d], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x10
ja 0x409d52
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add edx, 0x7708cef6
add eax, 0x7708cef6
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
add al, 0x46
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x11
jb 0x409d10
lea eax, [esp + 0x40]
mov ecx, esi
push ebx
mov ebx, eax
push eax
push edi
call fcn.004093b0
mov byte [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0x4be0ead6
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x10
ja 0x409de2
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ecx, byte [esp + ecx + 0x40]
lea edx, [eax + ecx]
add edx, 0xde8ad675
add eax, 0xde8ad675
and eax, ecx
add eax, eax
mov ecx, eax
xor ecx, edx
not eax
and eax, edx
add eax, eax
sub eax, ecx
add al, 0xcd
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x11
jb 0x409da0
mov ecx, esi
push dword [esp + 0x3c]
push ebx
push edi
call fcn.004093b0
mov eax, dword [str.LPnhqo___Lolzteam0ne0uts]
mov byte [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0xfb9c625a
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1c
ja 0x409e77
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x10]
add cl, 0x5f
xor cl, byte [esp + edx + 0x40]
add cl, 0x67
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x1d
jb 0x409e50
mov ecx, esi
push eax
push ebx
push edi
call fcn.004093b0
mov dword [esp + 0x40], 0x370c340b
mov dword [esp + 0x44], 0x142b1023
mov dword [esp + 0x48], 0x2e2d2013
mov byte [esp + 0x4c], 0x8c
mov dword [esp + 0x4d], 0
mov dword [esp + 0x51], 0
mov dword [esp + 0x55], 0
mov word [esp + 0x59], 0
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1a
ja 0x409f0e
nop
nop
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx edx, byte [esp + ecx + 0x40]
lea ecx, [eax + 0x5e4b7dec]
mov ebx, ecx
and ebx, edx
xor ecx, edx
add eax, 0xec
and eax, edx
add eax, ebx
sub ecx, eax
lea eax, [ecx + ebx*2]
add al, 0x8c
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
inc dword [esp + 0x10]
mov eax, dword [esp + 0x10]
cmp eax, 0x1b
jb 0x409ed0
mov word [esp + 0x20], 0
mov dword [esp + 0x1c], 0
mov dword [esp + 0x18], 0
mov dword [esp + 0x14], 0
mov dword [esp + 0x10], 0xbb2c5c55
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x11
ja 0x409f84
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
add al, 0xe7
xor al, byte [esp + ecx + 0x10]
add al, 0xaf
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x10], al
mov eax, dword [esp + 8]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
cmp eax, 0x12
jb 0x409f50
lea eax, [esp + 0x10]
mov ecx, esi
lea ebx, [esp + 0x40]
push ebx
push eax
push edi
call fcn.004093b0
mov dword [esp + 0x44], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x40], 0x162e2816
mov byte [esp + 0x44], 0xb4
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x10]
cmp eax, 0x1f
ja 0x40a041
nop
nop
nop
nop
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x10]
movzx edx, byte [esp + eax + 0x40]
lea eax, [ecx + edx]
add eax, 0x7c65fa48
add ecx, 0x7c65fa48
and ecx, edx
add ecx, ecx
sub eax, ecx
mov ecx, eax
or ecx, 7
and eax, 7
add eax, ecx
inc al
mov ecx, dword [esp + 0x10]
mov byte [esp + ecx + 0x40], al
mov eax, dword [esp + 0x10]
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
cmp eax, 0x20
jb 0x409ff0
mov ecx, esi
push dword [esp + 0xd4]
push dword [esp + 0xd4]
push ebx
push edi
call fcn.004096e0
mov eax, dword [esi + 0x60]
mov dword [esp + 0x40], 0x83118dcb
mov dword [esp + 0x44], 0x87128112
mov dword [esp + 0x48], 0xbb2885e1
mov dword [esp + 0x4c], 0xbfe3b92c
mov dword [esp + 0x50], 0xb33bbdc8
mov dword [esp + 0x54], 0xb7d3b120
mov dword [esp + 0x58], 0xab8ab5fa
mov dword [esp + 0x5c], 0xaf3ba935
mov dword [esp + 0x60], 0xa336ad30
mov dword [esp + 0x64], 0xa736a139
mov dword [esp + 0x68], 0xdb4ca5c5
mov dword [esp + 0x6c], 0xdf8dd94c
mov dword [esp + 0x70], 0xd341dd46
mov dword [esp + 0x74], 0xd74bd146
mov dword [esp + 0x78], 0xcbaed589
mov dword [esp + 0x7c], 0xcf5ac9a9
mov dword [esp + 0x80], 0xc38dcdad
mov dword [esp + 0x84], 0xc7a0c1e0
mov dword [esp + 0x88], 0xfb6fc557
mov dword [esp + 0x8c], 0xff9af96a
mov dword [esp + 0x90], 0xf364fd9d
mov dword [esp + 0x94], 0xf7bbf179
mov dword [esp + 0x98], 0xeb8ff592
mov dword [esp + 0x9c], 0xefbbe9a0
mov dword [esp + 0xa0], 0xe387ed88
mov dword [esp + 0xa4], 0xe77fe1b5
mov dword [esp + 0xa8], 0x1b7ee574
mov dword [esp + 0xac], 0x1f79198b
mov dword [esp + 0xb0], 0x13771d85
mov dword [esp + 0xb4], 0x17801186
mov dword [esp + 0xb8], 0xb5b1571
mov dword [esp + 0xbc], 0xf300935
mov word [esp + 0xc0], 0xd0c
mov word [esp + 0xce], 0
mov dword [esp + 0xca], 0
mov dword [esp + 0xc6], 0
mov dword [esp + 0xc2], 0
mov dword [esp + 0x10], 0
mov ecx, dword [esp + 0x10]
cmp ecx, 0x8f
ja 0x40a21d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
movzx ebx, byte [esp + ecx + 0x40]
lea ecx, [edx + ebx]
add ecx, 0x9c5f3816
add edx, 0x9c5f3816
and edx, ebx
add edx, edx
sub ecx, edx
add cl, 0x66
mov edx, dword [esp + 0x10]
mov byte [esp + edx + 0x40], cl
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x10]
cmp ecx, 0x90
jb 0x40a1e0
mov dword [esp + 0x10], 0x836b85b7
mov dword [esp + 0x14], 0x8f778172
mov word [esp + 0x18], 0x8d8e
mov dword [esp + 0x1a], 0
mov dword [esp + 0x1e], 0
mov word [esp + 0x22], 0
mov dword [esp + 8], 0
mov ecx, dword [esp + 8]
cmp ecx, 0x13
ja 0x40a2a9
nop
nop
nop
nop
mov edx, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ebx, byte [esp + ecx + 0x10]
lea ecx, [edx + ebx]
add ecx, 0x5ca52641
add edx, 0x5ca52641
and edx, ebx
add edx, edx
sub ecx, edx
add cl, 0x39
mov edx, dword [esp + 8]
mov byte [esp + edx + 0x10], cl
mov ecx, dword [esp + 8]
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
cmp ecx, 0x14
jb 0x40a260
push 0x493e0
push eax
push edi
push 0
push 0
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x28]
push eax
call fcn.0040d840
add esp, 0x1c
push edi
call fcn.004088e0
add esp, 4
mov dword [esi + 0x60], 0
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret