Function at 0x40b180
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xa8
mov edx, dword [ebp + 8]
mov dword [esp + 0x28], 0x5e167a79
mov dword [esp + 0x2c], 0xa080c00
lea ebx, [esp + 0x30]
mov byte [esp + 0x30], 0x90
mov dword [esp + 0x31], 0
mov dword [esp + 0x35], 0
mov byte [esp + 0x39], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x28]
lea esi, [eax - 0x40424cbc]
lea edi, [eax + ecx]
add edi, 0xbfbdb344
and esi, ecx
add esi, esi
sub edi, esi
mov dword [esp + 8], edi
mov ecx, dword [esp + 8]
add cl, 0x24
mov byte [esp + eax + 0x28], cl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 0x12
jb 0x40b1d0
lea eax, [esp + 0x9b]
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 + 0xa3]
xor ecx, ecx
xchg esi, ebx
rep movsw word es:[edi], word [esi]
xchg esi, ebx
movzx ecx, byte [esp + 0x30]
mov byte [esp + 0xa3], cl
mov dword [esp + 0x28], 0xbb29b973
mov dword [esp + 0x2c], 0xbf28bd14
mov dword [esp + 0x30], 0xa30ea119
mov dword [esp + 0x34], 0xa74ba536
mov dword [esp + 0x38], 0xab33a912
mov dword [esp + 0x3c], 0xaf0bad3a
mov dword [esp + 0x40], 0x93709174
mov dword [esp + 0x44], 0x97049531
mov dword [esp + 0x48], 0x9b349906
mov dword [esp + 0x4c], 0x9f399d31
mov dword [esp + 0x50], 0x8314813d
mov dword [esp + 0x54], 0x87158529
mov dword [esp + 0x58], 0x8b598928
mov dword [esp + 0x5c], 0x8f638d12
mov dword [esp + 0x60], 0x73e97117
mov dword [esp + 0x64], 0x779b75eb
mov dword [esp + 0x68], 0x7be979d0
mov dword [esp + 0x6c], 0x7fd37de8
mov dword [esp + 0x70], 0x63f76191
mov dword [esp + 0x74], 0x67c865f0
mov dword [esp + 0x78], 0x6bc669c1
mov dword [esp + 0x7c], 0x6ffd6dcf
mov dword [esp + 0x80], 0x53f751ca
mov dword [esp + 0x84], 0x575b55f6
mov dword [esp + 0x88], 0x5b58595c
mov word [esp + 0x94], 0
mov dword [esp + 0x90], 0
mov dword [esp + 0x8c], 0
mov ecx, 0x85e7f48
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0x85e7f20]
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, 0xf
mov byte [esp + ecx - 0x85e7f20], bl
movzx esi, byte [esp + ecx - 0x85e7f1f]
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, 0xf
mov byte [esp + ecx - 0x85e7f1f], bl
add ecx, 2
cmp ecx, 0x85e7fb6
jne 0x40b340
mov dword [esp + 8], 0x6303614f
mov dword [esp + 0xc], 0x670f65f4
mov word [esp + 0x10], 0x6968
mov dword [esp + 0x12], 0
mov dword [esp + 0x16], 0
mov dword [esp + 0x19], 0
mov ecx, 0xa7f74770
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x5808b898]
mov edi, ecx
and edi, esi
add edi, edi
sub esi, edi
add esi, ecx
mov dword [esp + 4], esi
mov ebx, dword [esp + 4]
add bl, 0xf0
mov byte [esp + ecx + 0x5808b898], bl
cmp ecx, 0xa7f74784
je 0x40b427
movzx esi, byte [esp + ecx + 0x5808b899]
lea edi, [ecx + 1]
and edi, esi
add edi, edi
sub esi, edi
add esi, ecx
inc esi
mov dword [esp + 4], esi
mov ebx, dword [esp + 4]
add bl, 0xf0
mov byte [esp + ecx + 0x5808b899], bl
add ecx, 2
jmp 0x40b3d0
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.0040c1d0
add esp, 0x1c
test al, al
je 0x40b6e6
mov word [esp + 0x28], 0x221f
mov byte [esp + 0x2a], 0xf2
mov dword [esp + 0x2b], 0
mov dword [esp + 0x2f], 0
mov dword [esp + 0x32], 0
mov eax, 0xaf6c143e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x5093ebea]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x4e
mov byte [esp + eax + 0x5093ebea], cl
movzx ecx, byte [esp + eax + 0x5093ebeb]
lea edx, [eax + 1]
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
inc ecx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x4e
mov byte [esp + eax + 0x5093ebeb], cl
add eax, 2
cmp eax, 0xaf6c144c
jne 0x40b480
xor ecx, ecx
mov eax, dword [esp + 0x24]
nop
nop
nop
nop
nop
nop
movzx edx, byte [eax + ecx]
mov dh, byte [esp + ecx + 0x28]
test dl, dl
je 0x40b4f1
inc ecx
cmp dl, dh
je 0x40b4e0
mov bl, 1
cmp dl, dh
je 0x40ba1a
mov dword [esp + 0x28], 0x715081b
mov dword [esp + 0x2c], 0x77040219
mov dword [esp + 0x30], 0
mov dword [esp + 8], 0xd98b46f5
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x28], al
movzx eax, byte [esp + 0x29]
lea ecx, [eax + eax]
and ecx, 0xffffffde
neg ecx
add eax, ecx
add eax, 0xd98b46ef
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x29], al
movzx eax, byte [esp + 0x2a]
lea ecx, [eax + eax]
and ecx, 0xffffffe0
neg ecx
add eax, ecx
add eax, 0xd98b46f0
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x2a], al
movzx eax, byte [esp + 0x2b]
lea ecx, [eax + eax]
and ecx, 0xffffffe2
neg ecx
add eax, ecx
add eax, 0xd98b46f1
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x2b], al
movzx eax, byte [esp + 0x2c]
lea ecx, [eax + eax]
and ecx, 0xffffffe4
neg ecx
add eax, ecx
add eax, 0xd98b46f2
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x2c], al
movzx eax, byte [esp + 0x2d]
lea ecx, [eax + eax]
and ecx, 0xffffffe6
neg ecx
add eax, ecx
add eax, 0xd98b46f3
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x2d], al
movzx eax, byte [esp + 0x2e]
lea ecx, [eax + eax]
and ecx, 0xffffffe8
neg ecx
add eax, ecx
add eax, 0xd98b46f4
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x2e], al
movzx eax, byte [esp + 0x2f]
lea ecx, [eax + eax]
and ecx, 0xffffffea
neg ecx
add eax, ecx
add eax, 0xd98b46f5
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x2f], al
movzx eax, byte [esp + 0x30]
lea ecx, [eax + eax]
and ecx, 0xffffffec
neg ecx
add eax, ecx
add eax, 0xd98b46f6
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x30], al
movzx eax, byte [esp + 0x31]
lea ecx, [eax + eax]
and ecx, 0xffffffee
neg ecx
add eax, ecx
add eax, 0xd98b46f7
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x31], al
movzx eax, byte [esp + 0x32]
lea ecx, [eax + eax]
and ecx, 0xfffffff0
neg ecx
add eax, ecx
add eax, 0xd98b46f8
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x32], al
movzx eax, byte [esp + 0x33]
lea ecx, [eax + eax]
and ecx, 0xfffffff2
neg ecx
add eax, ecx
add eax, 0xd98b46f9
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0x7e
mov byte [esp + 0x33], al
mov eax, dword [esp + 0x24]
movzx ebx, byte [esp + 0x28]
mov ecx, eax
test bl, bl
je 0x40b6ed
lea edx, [esp + 0x28]
mov esi, eax
mov ecx, eax
jmp 0x40b6c7
movzx ebx, byte [edx]
test bl, bl
je 0x40b6ed
mov bh, byte [esi]
test bh, bh
je 0x40b7f6
inc esi
inc edx
lea edi, [ecx + 1]
cmp bh, bl
je 0x40b6de
mov ecx, edi
mov esi, edi
je 0x40b6c0
lea edx, [esp + 0x28]
jmp 0x40b6c0
xor ebx, ebx
jmp 0x40ba23
test ecx, ecx
je 0x40b7f6
mov dword [esp + 0x28], 0x56af50ae
mov dword [esp + 0x2c], 0xa3571779
mov dword [esp + 0x30], 0xb08b2b7
mov dword [esp + 0x34], 0xbab24cba
mov dword [esp + 0x38], 0x23006c45
lea edx, [esp + 0x3c]
mov dword [esp + 0x3c], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov eax, 0x759039a9
nop
nop
movzx ecx, byte [esp + eax - 0x75903981]
lea esi, [eax - 1]
and esi, ecx
add esi, esi
sub ecx, esi
add ecx, eax
dec ecx
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add cl, 0x68
mov byte [esp + eax - 0x75903981], cl
movzx ecx, byte [esp + eax - 0x75903980]
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, 0x68
mov byte [esp + eax - 0x75903980], cl
add eax, 2
cmp eax, 0x759039c9
jne 0x40b740
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 0x40b7fd
mov edx, eax
mov esi, ecx
jmp 0x40b7d7
movzx ebx, byte [edx]
test bl, bl
je 0x40b7ff
mov bh, byte [ecx]
test bh, bh
je 0x40ba14
inc ecx
inc edx
lea edi, [esi + 1]
cmp bh, bl
je 0x40b7ee
mov esi, edi
mov ecx, edi
je 0x40b7d0
lea edx, [esp + 8]
jmp 0x40b7d0
xor ebx, ebx
jmp 0x40ba1a
mov esi, ecx
test esi, esi
je 0x40ba14
mov word [esp + 0x28], 0x6700
mov byte [esp + 0x2a], 0x24
mov dword [esp + 0x2b], 0
mov dword [esp + 0x2e], 0
mov dword [esp + 4], 0x5bf90225
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x28], cl
movzx ecx, byte [esp + 0x29]
lea edx, [ecx + ecx]
and edx, 0x4c
neg edx
add ecx, edx
add ecx, 0x5bf90226
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x29], cl
movzx ecx, byte [esp + 0x2a]
lea edx, [ecx + ecx]
and edx, 0x4e
neg edx
add ecx, edx
add ecx, 0x5bf90227
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x2a], cl
movzx ecx, byte [esp + 0x2b]
lea edx, [ecx + ecx]
and edx, 0x50
neg edx
add ecx, edx
add ecx, 0x5bf90228
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x2b], cl
movzx ecx, byte [esp + 0x2c]
lea edx, [ecx + ecx]
and edx, 0x52
neg edx
add ecx, edx
add ecx, 0x5bf90229
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x2c], cl
movzx ecx, byte [esp + 0x2d]
lea edx, [ecx + ecx]
and edx, 0x54
neg edx
add ecx, edx
add ecx, 0x5bf9022a
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x2d], cl
movzx ecx, byte [esp + 0x2e]
lea edx, [ecx + ecx]
and edx, 0x56
neg edx
add ecx, edx
add ecx, 0x5bf9022b
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x2e], cl
movzx ecx, byte [esp + 0x2f]
lea edx, [ecx + ecx]
and edx, 0x58
neg edx
add ecx, edx
add ecx, 0x5bf9022c
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x2f], cl
movzx ecx, byte [esp + 0x30]
lea edx, [ecx + ecx]
and edx, 0x5a
neg edx
add ecx, edx
add ecx, 0x5bf9022d
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x30], cl
movzx ecx, byte [esp + 0x31]
lea edx, [ecx + ecx]
and edx, 0x5c
neg edx
add ecx, edx
add ecx, 0x5bf9022e
mov dword [esp + 4], ecx
mov ecx, dword [esp + 4]
add cl, 0xfd
mov byte [esp + 0x31], cl
movzx ebx, byte [esp + 0x28]
test bl, bl
je 0x40b9b4
add esi, 0x13
lea ecx, [esp + 0x28]
mov edx, esi
mov edi, esi
jmp 0x40b999
movzx ebx, byte [ecx]
test bl, bl
mov edi, eax
je 0x40b9c9
mov bh, byte [edx]
test bh, bh
je 0x40ba14
inc edx
inc ecx
mov eax, edi
inc edi
cmp bh, bl
je 0x40b9ac
mov eax, edi
mov edx, edi
je 0x40b990
lea ecx, [esp + 0x28]
jmp 0x40b990
mov byte [0x44ad28], 1
mov ebx, 0x44ad2a
mov word [ebx], 0
mov bl, 1
jmp 0x40ba16
test edi, edi
je 0x40ba14
mov byte [0x44ad28], 1
mov dword [esp + 0x28], 0
mov ebx, 0x44ad2a
cmp edi, esi
jbe 0x40b9c0
cmp byte [esi], 0
je 0x40b9c0
lea eax, [esp + 0x28]
push eax
push edi
push esi
call fcn.0040d3a0
add esp, 0xc
movzx ecx, word [esp + 0x28]
mov word [ebx], cx
add ebx, 2
cmp ebx, 0x44af28
jae 0x40b9c0
add esi, eax
cmp esi, edi
jb 0x40b9e5
jmp 0x40b9c0
xor ebx, ebx
mov eax, dword [esp + 0x24]
push eax
call fcn.0043a0b0
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret