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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x90
mov dword [esp + 0x28], 0x651f0d74
mov dword [esp + 0x2c], 0x9151715
lea edx, [esp + 0x30]
mov byte [esp + 0x30], 0xad
mov dword [esp + 0x31], 0
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x1c]
cmp eax, 0xc
ja 0x40b8d3
nop
nop
nop
nop
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x1c]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x52914a3f
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x16
mov ecx, dword [esp + 0x1c]
mov byte [esp + ecx + 0x28], al
inc dword [esp + 0x1c]
mov eax, dword [esp + 0x1c]
cmp eax, 0xd
jb 0x40b8a0
lea eax, [esp + 0x1c]
lea esi, [esp + 0x28]
mov ebx, esi
mov edi, eax
mov ecx, 2
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [esp + 0x24]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0x24], cl
mov dword [esp + 0x28], 0x873989d7
mov dword [esp + 0x2c], 0x83088534
mov dword [esp + 0x30], 0x9f328139
mov dword [esp + 0x34], 0x9bef9d12
mov dword [esp + 0x38], 0x971f9936
mov dword [esp + 0x3c], 0x932f9526
mov dword [esp + 0x40], 0xeff091d4
mov dword [esp + 0x44], 0xeb5ced51
mov dword [esp + 0x48], 0xe75ce95a
mov dword [esp + 0x4c], 0xe359e551
mov dword [esp + 0x50], 0xff6ce15d
mov dword [esp + 0x54], 0xfb4dfd49
mov dword [esp + 0x58], 0xf789f948
mov dword [esp + 0x5c], 0xf387f57e
mov dword [esp + 0x60], 0xcf79f17b
mov dword [esp + 0x64], 0xcbbfcd47
mov dword [esp + 0x68], 0xc779c970
mov dword [esp + 0x6c], 0xc377c548
mov dword [esp + 0x70], 0xdf4bc1b1
mov dword [esp + 0x74], 0xdb68dd50
mov dword [esp + 0x78], 0xd76ad961
mov dword [esp + 0x7c], 0xd365d56b
mov dword [esp + 0x80], 0x2f6bd16e
mov dword [esp + 0x84], 0x2b3f2d92
mov dword [esp + 0x88], 0x2728293c
mov byte [esp + 0x8e], 0
mov word [esp + 0x8c], 0
mov dword [esp], 0
mov ecx, dword [esp]
cmp ecx, 0x66
ja 0x40ba3d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp]
mov edx, dword [esp]
movzx edx, byte [esp + edx + 0x28]
lea edi, [ecx + edx]
add edi, 0x796a8b25
add ecx, 0x796a8b25
and ecx, edx
add ecx, ecx
sub edi, ecx
mov dword [esp + 0xc], edi
mov ecx, dword [esp + 0xc]
add cl, 0x51
mov edx, dword [esp]
mov byte [esp + edx + 0x28], cl
inc dword [esp]
mov ecx, dword [esp]
cmp ecx, 0x67
jb 0x40ba00
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0xc], 0xa40aaade
mov dword [esp + 0x10], 0xa01ea615
mov word [esp + 0x14], 0xa2a1
mov dword [esp + 0x16], 0
mov dword [esp + 4], 0
mov edx, dword [esp + 4]
cmp edx, 0xd
ja 0x40bab3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, dword [esp + 4]
mov edi, dword [esp + 4]
movzx edi, byte [esp + edi + 0xc]
add edx, 0x65915905
xor edx, edi
mov dword [esp], edx
mov edx, dword [esp]
add dl, 0x54
mov edi, dword [esp + 4]
mov byte [esp + edi + 0xc], dl
inc dword [esp + 4]
mov edx, dword [esp + 4]
cmp edx, 0xe
jb 0x40ba80
lea edx, [esp + 4]
lea edi, [esp + 0xc]
push 0
push edx
push 8
push eax
push esi
push edi
push ecx
call fcn.0040c4f0
add esp, 0x1c
test al, al
je 0x40bc14
mov word [esp + 0x28], 0x1613
mov byte [esp + 0x2a], 0x7e
mov word [esp + 0x2b], 0
mov byte [esp + 0x2d], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 5
ja 0x40bb2e
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x827622ec
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x70
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 6
jb 0x40bb00
xor eax, eax
mov ecx, dword [esp + 4]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [ecx + eax]
mov dh, byte [esp + eax + 0x28]
test dl, dl
je 0x40bb51
inc eax
cmp dl, dh
je 0x40bb40
mov al, 1
mov dword [esp + 8], eax
cmp dl, dh
je 0x40be02
mov dword [esp + 0x28], 0x11070611
mov dword [esp + 0x2c], 0xf906181f
mov word [esp + 0x30], 0
mov byte [esp + 0x32], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0xa
ja 0x40bbd5
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
lea edx, [eax + ecx]
add edx, 0x46c6e1aa
add eax, 0x46c6e1aa
and eax, ecx
mov ecx, edx
xor ecx, eax
add ecx, eax
not eax
and eax, edx
add eax, eax
sub eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xb8
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0xb
jb 0x40bb90
mov eax, dword [esp + 4]
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40bc1b
mov edx, esi
mov ecx, eax
jmp 0x40bbf7
movzx ebx, byte [edx]
test bl, bl
je 0x40bc1d
mov bh, byte [eax]
test bh, bh
je 0x40bdfa
inc edx
inc eax
lea edi, [ecx + 1]
cmp bh, bl
je 0x40bc0e
mov ecx, edi
mov eax, edi
je 0x40bbf0
mov edx, esi
jmp 0x40bbf0
xor eax, eax
jmp 0x40be12
mov ecx, eax
test ecx, ecx
je 0x40bdfa
mov dword [esp + 0x28], 0x3a353836
mov dword [esp + 0x2c], 0x553dfde3
mov dword [esp + 0x30], 0x85804e51
mov dword [esp + 0x34], 0x5e4a4452
mov dword [esp + 0x38], 0xed88944f
mov word [esp + 0x3c], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 0x15
ja 0x40bc9e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0xf7a33b9
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0xdf
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 0x16
jb 0x40bc70
mov eax, dword [esp + 4]
movzx ecx, byte [esp + 0x28]
test cl, cl
je 0x40bce4
lea edi, [esp + 0x28]
mov edx, edi
mov esi, eax
jmp 0x40bcc7
movzx ecx, byte [edx]
test cl, cl
je 0x40bce6
mov ch, byte [eax]
test ch, ch
je 0x40bdfa
inc edx
inc eax
lea ebx, [esi + 1]
cmp ch, cl
je 0x40bcde
mov esi, ebx
mov eax, ebx
je 0x40bcc0
mov edx, edi
jmp 0x40bcc0
mov esi, eax
test esi, esi
je 0x40bdfa
mov word [esp + 0x28], 0x8bb0
mov byte [esp + 0x2a], 0x54
mov dword [esp + 0x2b], 0
mov byte [esp + 0x2f], 0
mov dword [esp], 0
mov eax, dword [esp]
cmp eax, 7
ja 0x40bd4e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, dword [esp]
mov ecx, dword [esp]
movzx ecx, byte [esp + ecx + 0x28]
add eax, 0x8b98e823
xor eax, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
add al, 0x8f
mov ecx, dword [esp]
mov byte [esp + ecx + 0x28], al
inc dword [esp]
mov eax, dword [esp]
cmp eax, 8
jb 0x40bd20
movzx eax, byte [esp + 0x28]
test al, al
je 0x40bd90
add esi, 0x13
lea ebp, [esp + 0x28]
mov ecx, ebp
mov edx, esi
mov edi, esi
jmp 0x40bd77
movzx eax, byte [ecx]
test al, al
je 0x40bda1
mov ah, byte [edx]
test ah, ah
je 0x40bdfa
inc ecx
inc edx
lea ebx, [edi + 1]
cmp ah, al
je 0x40bd8a
mov edi, ebx
mov edx, ebx
je 0x40bd70
mov ecx, ebp
jmp 0x40bd70
mov byte [0x44997c], 1
mov eax, 0x44997e
jmp 0x40be23
test edi, edi
je 0x40bdfa
mov byte [0x44997c], 1
mov dword [esp + 0x28], 0
mov eax, 0x44997e
cmp esi, edi
jae 0x40be23
xor ebx, ebx
lea ebp, [esp + 0x28]
cmp byte [esi], 0
je 0x40be1d
push ebp
push edi
push esi
call fcn.0040d600
add esp, 0xc
movzx edx, word [esp + 0x28]
lea ecx, [ebx + 2]
mov word [ebx + 0x44997e], dx
cmp ebx, 0x1fb
ja 0x40bdf2
add esi, eax
mov ebx, ecx
cmp esi, edi
jb 0x40bdc3
lea eax, [ecx + 0x44997e]
jmp 0x40be23
mov dword [esp + 8], 0
push dword [esp + 4]
call fcn.0043ae00
add esp, 4
mov eax, dword [esp + 8]
add esp, 0x90
pop esi
pop edi
pop ebx
pop ebp
ret
lea eax, [ebx + 0x44997e]
mov word [eax], 0
jmp 0x40be02