Function at 0x40b750
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa0
mov edx, dword [ebp + 8]
mov dword [esp + 0x28], 0x80786869
mov dword [esp + 0x2c], 0x646a7676
lea ebx, [esp + 0x30]
mov byte [esp + 0x30], 0xce
mov dword [esp + 0x31], 0
mov dword [esp + 0x35], 0
mov dword [esp + 0x39], 0
mov eax, 0x9ca18d61
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x635e72c7]
mov esi, eax
and esi, ecx
add esi, esi
sub ecx, esi
add ecx, eax
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x59
mov byte [esp + eax + 0x635e72c7], cl
cmp eax, 0x9ca18d75
je 0x40b7f6
movzx ecx, byte [esp + eax + 0x635e72c8]
lea esi, [eax + 1]
and esi, ecx
add esi, esi
sub ecx, esi
add ecx, eax
inc ecx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x59
mov byte [esp + eax + 0x635e72c8], cl
add eax, 2
jmp 0x40b7a0
lea eax, [esp + 0x93]
lea esi, [esp + 0x28]
mov ecx, 2
mov edi, eax
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0x9b]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0x9b], cl
mov dword [esp + 0x28], 0x338535eb
mov dword [esp + 0x2c], 0xfbc3180
mov dword [esp + 0x30], 0xbbe0db5
mov dword [esp + 0x34], 0x7fb0986
mov dword [esp + 0x38], 0x38305aa
mov dword [esp + 0x3c], 0x1fbb01b2
mov dword [esp + 0x40], 0x1bfc1dd8
mov dword [esp + 0x44], 0x17a819a5
mov dword [esp + 0x48], 0x13a015a6
mov dword [esp + 0x4c], 0xefad11a5
mov dword [esp + 0x50], 0xeb60ed51
mov dword [esp + 0x54], 0xe759e95d
mov dword [esp + 0x58], 0xe315e554
mov dword [esp + 0x5c], 0xff13e16a
mov dword [esp + 0x60], 0xfb75fd77
mov dword [esp + 0x64], 0xf70bf973
mov dword [esp + 0x68], 0xf345f54c
mov dword [esp + 0x6c], 0xcf43f17c
mov dword [esp + 0x70], 0xcb47cd3d
mov dword [esp + 0x74], 0xc77cc944
mov dword [esp + 0x78], 0xc376c57d
mov dword [esp + 0x7c], 0xdf71c17f
mov dword [esp + 0x80], 0xdb67dd62
mov dword [esp + 0x84], 0xd7cbd966
mov dword [esp + 0x88], 0xd3d4d5c0
mov dword [esp + 0x8c], 0
mov ecx, 0x6f78efda
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x6f78efb2]
lea edi, [ecx - 1]
and edi, esi
add edi, edi
sub esi, edi
add esi, ecx
dec esi
mov dword [esp + 8], esi
mov ebx, dword [esp + 8]
add bl, 0x11
mov byte [esp + ecx - 0x6f78efb2], bl
movzx esi, byte [esp + ecx - 0x6f78efb1]
mov edi, ecx
and edi, esi
add edi, edi
sub esi, edi
add esi, ecx
mov dword [esp + 8], esi
mov ebx, dword [esp + 8]
add bl, 0x11
mov byte [esp + ecx - 0x6f78efb1], bl
add ecx, 2
cmp ecx, 0x6f78f042
jne 0x40b910
mov dword [esp + 8], 0xcb6bcd3f
mov dword [esp + 0xc], 0xc77fc978
mov word [esp + 0x10], 0xc5c4
mov dword [esp + 0x16], 0
mov dword [esp + 0x12], 0
xor ecx, ecx
nop
nop
movzx esi, byte [esp + ecx + 8]
lea edi, [ecx + 0x1a54322]
lea ebx, [ecx + esi]
add ebx, 0x1a54322
and edi, esi
add edi, edi
sub ebx, edi
mov dword [esp + 4], ebx
mov ebx, dword [esp + 4]
add bl, 0x12
mov byte [esp + ecx + 8], bl
mov esi, ecx
and esi, 1
xor ecx, 1
lea ecx, [ecx + esi*2]
cmp ecx, 0x12
jb 0x40b990
lea ecx, [esp + 0x24]
lea esi, [esp + 8]
push 0
push ecx
push 8
push eax
lea eax, [esp + 0x38]
push eax
push esi
push edx
call fcn.0040c670
add esp, 0x1c
xor ebx, ebx
test al, al
je 0x40bf79
mov word [esp + 0x28], 0x7a7f
mov byte [esp + 0x2a], 0xca
mov dword [esp + 0x2b], 0
mov word [esp + 0x2f], 0
mov dword [esp + 8], 0x5d5c98dd
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x28], al
movzx eax, byte [esp + 0x29]
lea ecx, [eax + eax]
and ecx, 0x146
neg ecx
add eax, ecx
add eax, 0x5d5c98a3
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x29], al
movzx eax, byte [esp + 0x2a]
lea ecx, [eax + eax]
and ecx, 0x148
neg ecx
add eax, ecx
add eax, 0x5d5c98a4
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x2a], al
movzx eax, byte [esp + 0x2b]
lea ecx, [eax + eax]
and ecx, 0x14a
neg ecx
add eax, ecx
add eax, 0x5d5c98a5
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x2b], al
movzx eax, byte [esp + 0x2c]
lea ecx, [eax + eax]
and ecx, 0x14c
neg ecx
add eax, ecx
add eax, 0x5d5c98a6
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x2c], al
movzx eax, byte [esp + 0x2d]
lea ecx, [eax + eax]
and ecx, 0x14e
neg ecx
add eax, ecx
add eax, 0x5d5c98a7
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x2d], al
movzx eax, byte [esp + 0x2e]
lea ecx, [eax + eax]
and ecx, 0x150
neg ecx
add eax, ecx
add eax, 0x5d5c98a8
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x2e], al
movzx eax, byte [esp + 0x2f]
lea ecx, [eax + eax]
and ecx, 0x152
neg ecx
add eax, ecx
add eax, 0x5d5c98a9
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x2f], al
movzx eax, byte [esp + 0x30]
lea ecx, [eax + eax]
and ecx, 0x154
neg ecx
add eax, ecx
add eax, 0x5d5c98aa
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x92
mov byte [esp + 0x30], al
mov eax, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [eax + ebx]
movzx edx, byte [esp + ebx + 0x28]
test cl, cl
je 0x40bb62
inc ebx
cmp cl, dl
je 0x40bb50
mov bl, 1
cmp cl, dl
je 0x40bf70
mov dword [esp + 0x28], 0x8f9d9e93
mov dword [esp + 0x2c], 0x7f828c81
mov dword [esp + 0x30], 0
mov byte [esp + 0x34], 0
xor eax, eax
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x28]
lea edx, [eax + 0xbf5ac2f]
lea esi, [eax + ecx]
add esi, 0xbf5ac2f
and edx, ecx
add edx, edx
sub esi, edx
mov dword [esp + 8], esi
mov ecx, dword [esp + 8]
add cl, 0xb7
mov byte [esp + eax + 0x28], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0xd
jb 0x40bb90
mov eax, dword [esp + 0x24]
movzx ebx, byte [esp + 0x28]
mov ecx, eax
test bl, bl
lea esi, [esp + 0x28]
je 0x40bc0e
mov edx, eax
mov ecx, eax
mov edi, esi
jmp 0x40bbfc
inc ecx
mov edi, esi
mov edx, ecx
movzx ebx, byte [edi]
test bl, bl
je 0x40bc0e
mov bh, byte [edx]
test bh, bh
je 0x40bd0e
cmp bh, bl
jne 0x40bbf0
inc edx
inc edi
jmp 0x40bbf5
test ecx, ecx
je 0x40bd0e
mov dword [esp + 0x28], 0xdcc7dad8
mov dword [esp + 0x2c], 0xcbdf9fb5
mov dword [esp + 0x30], 0x9392cccf
mov dword [esp + 0x34], 0xc0c8d6c4
mov dword [esp + 0x38], 0x4baa86d1
lea edx, [esp + 0x3c]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov word [esp + 0x44], 0
mov eax, 0x9b272c0f
nop
nop
movzx ecx, byte [esp + eax + 0x64d8d419]
mov esi, eax
and esi, ecx
add esi, esi
sub ecx, esi
add ecx, eax
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x97
mov byte [esp + eax + 0x64d8d419], cl
movzx ecx, byte [esp + eax + 0x64d8d41a]
lea esi, [eax + 1]
and esi, ecx
add esi, esi
sub ecx, esi
add ecx, eax
inc ecx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x97
mov byte [esp + eax + 0x64d8d41a], cl
add eax, 2
cmp eax, 0x9b272c2d
jne 0x40bc60
lea esi, [esp + 0x28]
lea eax, [esp + 8]
mov edi, eax
mov ecx, 5
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [esp + 0x1c]
xor ecx, ecx
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov ecx, dword [esp + 0x24]
movzx ebx, byte [esp + 8]
test bl, bl
je 0x40bd15
mov esi, ecx
mov edx, eax
mov edi, eax
lea eax, [esp + 0x28]
jmp 0x40bcfc
inc esi
mov edx, edi
mov ecx, esi
movzx ebx, byte [edx]
test bl, bl
je 0x40bd1b
mov bh, byte [ecx]
test bh, bh
je 0x40bf6a
cmp bh, bl
jne 0x40bcf0
inc ecx
inc edx
jmp 0x40bcf5
xor ebx, ebx
jmp 0x40bf70
mov esi, ecx
lea eax, [esp + 0x28]
test esi, esi
je 0x40bf6a
mov word [esp + 0x28], 0xf708
mov byte [esp + 0x2a], 0x34
mov dword [esp + 0x2b], 0
mov dword [esp + 0x2f], 0
mov byte [esp + 0x33], 0
mov dword [esp + 4], 0x7f8cecf1
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x28], cl
movzx ecx, byte [esp + 0x29]
lea edx, [ecx + ecx]
and edx, 0xfffffff4
neg edx
add ecx, edx
add ecx, 0x7f8cecfa
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x29], cl
movzx ecx, byte [esp + 0x2a]
lea edx, [ecx + ecx]
and edx, 0xfffffff6
neg edx
add ecx, edx
add ecx, 0x7f8cecfb
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x2a], cl
movzx ecx, byte [esp + 0x2b]
lea edx, [ecx + ecx]
and edx, 0xfffffff8
neg edx
add ecx, edx
add ecx, 0x7f8cecfc
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x2b], cl
movzx ecx, byte [esp + 0x2c]
lea edx, [ecx + ecx]
and edx, 0xfffffffa
neg edx
add ecx, edx
add ecx, 0x7f8cecfd
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x2c], cl
movzx ecx, byte [esp + 0x2d]
lea edx, [ecx + ecx]
and edx, 0xfffffffc
neg edx
add ecx, edx
add ecx, 0x7f8cecfe
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x2d], cl
movzx ecx, byte [esp + 0x2e]
lea edx, [ecx + ecx]
neg edx
add ecx, edx
add ecx, 0x7f8cecff
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x2e], cl
movzx ecx, byte [esp + 0x2f]
or ecx, 0x7f8ced00
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x2f], cl
movzx ecx, byte [esp + 0x30]
lea edx, [ecx + ecx]
and edx, 2
neg edx
add ecx, edx
add ecx, 0x7f8ced01
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x30], cl
movzx ecx, byte [esp + 0x31]
lea edx, [ecx + ecx]
and edx, 4
neg edx
add ecx, edx
add ecx, 0x7f8ced02
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x31], cl
movzx ecx, byte [esp + 0x32]
lea edx, [ecx + ecx]
and edx, 6
neg edx
add ecx, edx
add ecx, 0x7f8ced03
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x32], cl
movzx ecx, byte [esp + 0x33]
lea edx, [ecx + ecx]
and edx, 8
neg edx
add ecx, edx
add ecx, 0x7f8ced04
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0x31
mov byte [esp + 0x33], cl
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40bf0a
add esi, 0x13
mov ecx, esi
mov edi, esi
mov edx, eax
jmp 0x40befc
inc edi
mov edx, eax
mov ecx, edi
movzx ebx, byte [edx]
test bl, bl
je 0x40bf1f
mov bh, byte [ecx]
test bh, bh
je 0x40bf6a
cmp bh, bl
jne 0x40bef0
inc ecx
inc edx
jmp 0x40bef5
mov byte [0x4482ac], 1
mov ebx, 0x4482ae
mov word [ebx], 0
mov bl, 1
jmp 0x40bf6c
test edi, edi
je 0x40bf6a
mov byte [0x4482ac], 1
mov dword [esp + 0x28], 0
mov ebx, 0x4482ae
cmp edi, esi
jbe 0x40bf16
cmp byte [esi], 0
je 0x40bf16
lea eax, [esp + 0x28]
push eax
push edi
push esi
call fcn.0040d780
add esp, 0xc
movzx ecx, word [esp + 0x28]
mov word [ebx], cx
add ebx, 2
cmp ebx, 0x4484ac
jae 0x40bf16
add esi, eax
cmp esi, edi
jb 0x40bf3b
jmp 0x40bf16
xor ebx, ebx
mov eax, dword [esp + 0x24]
push eax
call fcn.004390d0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret