Function at 0x40b670
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x84
mov dword [esp + 4], 0xb6ced2d1
mov dword [esp + 8], 0xd2d0d4c8
lea ebx, [esp + 0xc]
mov byte [esp + 0xc], pe_nt_image_headers32
mov dword [esp + 0xd], 0
xor eax, eax
nop
nop
nop
movzx esi, byte [esp + eax + 4]
lea ecx, [eax + eax]
mov edi, ecx
and edi, 8
mov edx, eax
xor edx, 0x6fee1694
add edx, edi
mov edi, edx
and edi, esi
add edx, esi
add edi, edi
sub edx, edi
add dl, 0x1c
mov byte [esp + eax + 4], dl
and ecx, 2
sub eax, ecx
inc eax
mov edx, eax
and edx, ecx
xor eax, ecx
lea eax, [eax + edx*2]
cmp eax, 0xd
jb 0x40b6a0
lea eax, [esp + 0x7b]
lea esi, [esp + 4]
mov edx, esi
mov edi, eax
mov ecx, 2
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
lea edi, [esp + 0x83]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0xc]
mov byte [esp + 0x83], cl
mov dword [esp + 4], 0x61176739
mov dword [esp + 8], 0x7dee6316
mov dword [esp + 0xc], 0x79087f03
mov dword [esp + 0x10], 0x754d7bf4
mov dword [esp + 0x14], 0x71fd7718
mov dword [esp + 0x18], 0x8d0d7300
mov dword [esp + 0x1c], 0x89ae8fc6
mov dword [esp + 0x20], 0x85fa8beb
mov dword [esp + 0x24], 0x81f287f4
mov dword [esp + 0x28], 0x9dff83fb
mov dword [esp + 0x2c], 0x99129fff
mov dword [esp + 0x30], 0x95eb9be3
mov dword [esp + 0x34], 0x91a797e2
mov dword [esp + 0x38], 0xada59318
mov dword [esp + 0x3c], 0xa927af25
mov dword [esp + 0x40], 0xa59dab21
mov dword [esp + 0x44], 0xa1d7a7da
mov dword [esp + 0x48], 0xbdd5a3d2
mov dword [esp + 0x4c], 0xb931bf8b
mov dword [esp + 0x50], 0xb5cebbca
mov dword [esp + 0x54], 0xb1c0b7cb
mov dword [esp + 0x58], 0xcdc3b3cd
mov dword [esp + 0x5c], 0xc9b1cfb0
mov dword [esp + 0x60], 0xc5ddcbb4
mov dword [esp + 0x64], 0xc1c6c7de
mov ebp, 0x1c21c769
mov edi, 0xe3de3896
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + ebp - 0x1c21c765]
mov edx, edi
and edx, 0xc2c800ba
mov ecx, ebp
and ecx, 0x1c21c445
or ecx, edx
xor ecx, ebx
xor ecx, 0xba
lea edx, [ebp - 0x1c21c700]
and edx, ebx
or edx, ecx
and ebx, ebp
sub edx, ebx
add dl, 0xf3
mov byte [esp + ebp - 0x1c21c765], dl
inc ebp
dec edi
cmp ebp, 0x1c21c7cd
jne 0x40b7f0
mov dword [esp + 0x6c], 0x89358b7d
mov dword [esp + 0x70], 0x85318738
mov dword [esp + 0x74], 0x8384
mov ecx, 0xf81f1163
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x7e0ef09]
xor edx, ecx
mov edi, edx
and edi, 0x10
xor edx, 0x10
lea edx, [edx + edi*2]
inc dl
mov byte [esp + ecx + 0x7e0ef09], dl
inc ecx
cmp ecx, 0xf81f116f
jne 0x40b860
mov ecx, esp
lea edx, [esp + 0x6c]
push 0
push ecx
push 8
push eax
push esi
push edx
push dword [esp + 0xb0]
call fcn.0040c200
add esp, 0x1c
test al, al
je 0x40b994
mov dword [esp + 4], 0x72eae7
mov eax, 0xf31f4338
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0xce0bccc]
xor ecx, eax
mov edx, ecx
and edx, 0x58
add edx, edx
xor edx, 0xa0
xor ecx, 0x8c
add ecx, edx
add cl, 0xc
mov byte [esp + eax + 0xce0bccc], cl
inc eax
cmp eax, 0xf31f433c
jne 0x40b8c0
xor ecx, ecx
mov eax, dword [esp]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 4]
test dl, dl
je 0x40b911
inc ecx
cmp dl, dh
je 0x40b900
mov bl, 1
cmp dl, dh
je 0x40bb00
mov dword [esp + 4], 0x857b7889
mov dword [esp + 8], 0x158c828b
mov word [esp + 0xc], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 5
xor dl, byte [esp + ecx + 4]
add dl, 0xe7
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0xa
jne 0x40b940
movzx ebx, byte [esp + 4]
mov ecx, eax
test bl, bl
je 0x40b99b
mov edx, esi
mov edi, eax
mov ecx, eax
jmp 0x40b977
movzx ebx, byte [edx]
test bl, bl
je 0x40b99b
mov bh, byte [edi]
test bh, bh
je 0x40bafe
inc edx
inc edi
lea ebp, [ecx + 1]
cmp bh, bl
je 0x40b98e
mov ecx, ebp
mov edi, ebp
je 0x40b970
mov edx, esi
jmp 0x40b970
xor ebx, ebx
jmp 0x40bb09
xor edx, edx
test ecx, ecx
je 0x40bafe
mov dword [esp + 4], 0xe2e9fcf6
mov dword [esp + 8], 0xe9f9391b
mov dword [esp + 0xc], 0x3134eeed
mov dword [esp + 0x10], 0xdeeaf0da
mov dword [esp + 0x14], 0xa9cce8ef
mov word [esp + 0x18], 0
mov byte [esp + 0x1a], 0
nop
nop
nop
nop
nop
nop
nop
mov ecx, edx
add cl, 0xef
xor cl, byte [esp + edx + 4]
add cl, 0x55
mov byte [esp + edx + 4], cl
inc edx
cmp edx, 0x17
jne 0x40b9e0
movzx edx, byte [esp + 4]
mov ecx, eax
test dl, dl
je 0x40ba34
lea ebp, [esp + 4]
mov esi, ebp
mov edi, eax
mov ecx, eax
jmp 0x40ba17
movzx edx, byte [esi]
test dl, dl
je 0x40ba34
mov dh, byte [edi]
test dh, dh
je 0x40bafe
inc esi
inc edi
lea ebx, [ecx + 1]
cmp dh, dl
je 0x40ba2e
mov ecx, ebx
mov edi, ebx
je 0x40ba10
mov esi, ebp
jmp 0x40ba10
xor edx, edx
test ecx, ecx
je 0x40bafe
mov edi, ecx
mov word [esp + 4], 0x5772
mov byte [esp + 6], 0x92
mov word [esp + 7], 0
mov byte [esp + 9], 0
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + edx + 4]
lea ebx, [edx + 0x64]
mov esi, 0x9b
sub esi, edx
xor ebx, esi
and ebx, ecx
xor ebx, esi
mov cl, 0xb
sub cl, bl
mov byte [esp + edx + 4], cl
mov ecx, edx
and ecx, 1
xor edx, 1
lea edx, [edx + ecx*2]
cmp edx, 6
jb 0x40ba60
mov ecx, edi
add ecx, 0x13
movzx ebx, byte [esp + 4]
test bl, bl
je 0x40bad0
lea esi, [esp + 4]
mov edi, esi
mov edx, ecx
mov dword [esp + 0x68], ecx
jmp 0x40bab7
movzx ebx, byte [edi]
test bl, bl
je 0x40bad4
mov bh, byte [ecx]
test bh, bh
je 0x40bafe
inc edi
inc ecx
lea ebp, [edx + 1]
cmp bh, bl
je 0x40baca
mov edx, ebp
mov ecx, ebp
je 0x40bab0
mov edi, esi
jmp 0x40bab0
mov edx, ecx
jmp 0x40badc
test edx, edx
mov ecx, dword [esp + 0x68]
je 0x40bafe
mov byte [0x44bde0], 1
push edx
push ecx
push 0x100
push 0x44bde2
call fcn.0040b3e0
add esp, 0x10
mov eax, dword [esp]
mov bl, 1
jmp 0x40bb00
xor ebx, ebx
push eax
call fcn.0043b890
add esp, 4
mov eax, ebx
add esp, 0x84
pop esi
pop edi
pop ebx
pop ebp
ret