Function at 0x7f41e0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x44
mov esi, dword [ecx]
xor edi, edi
mov eax, dword [esi + 0x18]
cmp byte [esi + 0x51], 0
mov dword [esp + 0x40], eax
jne 0x7f4c88
lea eax, [edx + 8]
xor edi, edi
mov ebp, ecx
mov dword [esp + 8], edx
xor edx, edx
push eax
call fcn.0080c090
add esp, 4
test eax, eax
jne 0x7f421f
mov edx, dword [esp + 8]
jmp 0x7f4c88
mov edx, dword [eax + 0x48]
mov ecx, dword [ebp]
mov edi, dword [esp + 0x58]
mov dword [esp + 0x10], eax
call fcn.0078dee0
mov ecx, eax
mov eax, dword [esi + 0x10]
mov edx, edi
xor edi, edi
mov dword [esp + 0x20], ecx
shl ecx, 4
mov ebx, dword [eax + ecx]
or dword [esi + 0x18], 2
mov ecx, esi
call fcn.007e4800
mov edx, dword [esp + 8]
test eax, eax
je 0x7f4c88
mov edi, eax
mov dword [esp + 4], ebp
mov ecx, esi
mov edx, eax
push ebx
call fcn.00797640
add esp, 4
test eax, eax
jne 0x7f428a
mov ebp, ebx
mov ecx, esi
mov edx, edi
push ebx
call fcn.007cab10
add esp, 4
test eax, eax
je 0x7f43ef
mov edx, fcn.0080f170
xor eax, eax
movzx ebx, byte [0xbbb6bf]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt ebx, eax
jb 0x7f43d4
mov al, byte [0xbbb6bf]
xor ebx, ebx
cmp edx, 3
mov ah, 1
sete bl
mov ecx, ebx
xor ecx, 1
lea ecx, [ebx + ecx*2 + 2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbb6bf], ah
jne 0x7f42bb
mov ecx, fcn.0080f170
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7f432b
xor eax, eax
cmp ecx, 3
movzx ebx, byte [0xbbb6bf]
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 2]
bt ebx, eax
jae 0x7f4309
jmp 0x7f43d4
xor eax, eax
cmp ecx, 3
movzx ebx, byte [0xbbb6bf]
sete al
mov ecx, eax
not ecx
and ecx, 0x611
lea edx, [eax + ecx*2 - 0x2c26879e]
mov eax, edx
and al, 7
movzx eax, al
bt ebx, eax
jb 0x7f43ab
mov dword [esp], edi
mov edi, 0xbbb680
xor eax, eax
mov ebx, dword [edi]
mov ecx, eax
mov ebp, edx
inc eax
shl ebp, cl
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov dword [edi], ebx
or edx, ebp
not ebx
add edi, 4
imul edx, ebx
cmp eax, 0xf
jne 0x7f4361
mov eax, fcn.0080f170
xor ecx, ecx
mov dl, 1
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [ecx + eax*2 + 2]
shl dl, cl
or byte [0xbbb6bf], dl
mov edi, dword [esp]
mov eax, fcn.0080f170
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [ecx + eax*2 + 2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbbb6bf], al
push edi
push 0xbbb680
push dword [esp + 0xc]
call fcn.0078de60
add esp, 0xc
mov edx, dword [esp + 8]
jmp 0x7f4c88
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 4]
mov edx, ebx
call fcn.0083ac70
test eax, eax
je 0x7f440b
mov edx, dword [esp + 8]
jmp 0x7f4c88
mov edx, 0x7d2dc0
xor eax, eax
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbbb6cb]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7f4552
mov al, byte [0xbbb6cb]
mov dword [esp], edi
xor ecx, ecx
cmp edx, 2
mov ah, 1
sete cl
mov ebx, ecx
not ebx
lea ecx, [ebx + ecx*2]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbb6cb], ah
jne 0x7f4442
mov ecx, 0x7d2dc0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
not ebx
lea edx, [ebx + edx*2]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7f44be
mov edi, dword [esp]
mov ebx, dword [esp + 0x10]
xor eax, eax
cmp ecx, 2
sete al
mov edx, eax
not edx
lea eax, [edx + eax*2]
movzx edx, byte [0xbbb6cb]
and al, 7
movzx eax, al
bt edx, eax
jae 0x7f4499
jmp 0x7f4552
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbbb6cb]
mov ebx, dword [esp + 0x10]
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7f4525
mov eax, 0x7d2dc0
xor ecx, ecx
mov edi, dword [0xbbb6c0]
mov dl, 1
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 0x3c659717
lea ecx, [eax + ecx*2]
xor edi, ecx
mov dword [0xbbb6c0], edi
not edi
imul edi, ecx
and cl, 7
shl dl, cl
xor dword [0xbbb6c4], edi
or byte [0xbbb6cb], dl
mov eax, 0x7d2dc0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
not eax
lea ecx, [eax + ecx*2]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbbb6cb], al
mov edi, dword [esp]
mov ecx, dword [esp + 4]
mov edx, edi
push edi
push 0xbbb6c0
call fcn.00800ad0
add esp, 8
test eax, eax
je 0x7f4573
mov edx, dword [esp + 8]
jmp 0x7f4c88
mov dword [esp], edi
cmp dword [ebx + 0xc], 0
mov edi, dword [ebx]
je 0x7f473c
mov edx, 0x82a030
movzx ecx, byte [0xbbb6ef]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x7f4728
mov al, byte [0xbbb6ef]
cmp edx, 3
mov ah, 1
sete cl
not cl
and cl, 3
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbb6ef], ah
jne 0x7f45af
mov ecx, 0x82a030
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
not dl
and dl, 3
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7f460f
cmp ecx, 3
movzx edx, byte [0xbbb6ef]
sete al
not al
and al, 3
movzx eax, al
bt edx, eax
jae 0x7f45f1
jmp 0x7f4728
cmp ecx, 3
movzx ecx, byte [0xbbb6ef]
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x7f4705
mov eax, 0x82a030
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov eax, dword [0xbbb6d0]
sete cl
xor ecx, 0xa456c40b
add ecx, 0x7c8
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbbb6d0], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbbb6d4]
lea ebx, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbbb6d4], eax
or ebx, edx
not eax
mov edx, dword [0xbbb6d8]
imul eax, ebx
lea ebx, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbbb6d8], edx
or ebx, eax
not edx
mov eax, dword [0xbbb6dc]
imul edx, ebx
lea ebx, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbbb6dc], eax
or ebx, edx
not eax
mov edx, dword [0xbbb6e0]
imul eax, ebx
mov ebx, eax
shl ebx, 4
xor edx, eax
shr eax, 0x1b
mov dword [0xbbb6e0], edx
or eax, ebx
not edx
mov ebp, dword [0xbbb6e4]
imul edx, eax
mov ebx, edx
shl ebx, 5
xor ebp, edx
shr edx, 0x1a
mov dword [0xbbb6e4], ebp
or edx, ebx
not ebp
imul ebp, edx
mov dl, 1
xor dword [0xbbb6e8], ebp
shl dl, cl
or byte [0xbbb6ef], dl
mov eax, 0x82a030
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
sete cl
not cl
and cl, 3
xor cl, 7
rol al, cl
and byte [0xbbb6ef], al
push edi
push 0xbbb6d0
push dword [esp + 0xc]
call fcn.0078de60
add esp, 0xc
jmp 0x7f4759
mov ebx, ebp
mov ebp, dword [esp + 4]
mov edx, 0x1a
mov ecx, ebp
push 0
push edi
push ebx
call fcn.008002d0
add esp, 0xc
test eax, eax
je 0x7f4765
mov edi, dword [esp]
mov edx, dword [esp + 8]
jmp 0x7f4c88
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x10]
mov ecx, ebp
mov edx, ebx
call fcn.0080c2b0
mov edi, dword [esp]
test eax, eax
je 0x7f4786
mov edx, dword [esp + 8]
jmp 0x7f4c88
cmp dword [ebx + 0x38], 0
mov ebp, 0
je 0x7f47a9
mov ecx, esi
mov edx, ebx
call fcn.007d0920
mov ebp, eax
mov eax, dword [eax + 8]
mov eax, dword [eax]
mov eax, dword [eax + 0x4c]
test eax, eax
cmove ebp, eax
mov ecx, dword [esp + 4]
call fcn.007f7590
test eax, eax
jne 0x7f47bf
mov edx, dword [esp + 8]
jmp 0x7f4c88
mov edx, fcn.007d3290
xor ecx, ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ebp
imul edx, edx
and edx, 3
mov dword [esp + 0x38], edx
xor eax, eax
cmp dword [esp + 0x38], 2
mov edi, dword [ecx*4 + 0xb57160]
mov ebx, dword [ecx*4 + 0xb57180]
mov dword [esp + 0x1c], ecx
sete al
or eax, 0x8009c78c
add eax, 0x10c0
xor eax, dword [ecx*4 + 0xb571a0]
mov ecx, eax
mov dword [esp + 0x3c], eax
mov eax, 1
and cl, 7
movzx edx, cl
shl eax, cl
xor cl, 7
mov dword [esp + 0xc], edx
mov edx, 1
shl edx, cl
movzx ecx, byte [edi + ebx - 1]
mov ebp, dword [esp + 0xc]
bt ecx, ebp
jb 0x7f48cc
mov dword [esp + 0x24], eax
mov al, byte [edi + ebx - 1]
mov ecx, eax
or cl, dl
lock cmpxchg byte [edi + ebx - 1], cl
jne 0x7f4840
mov ecx, dword [esp + 0x24]
movzx eax, al
test edx, eax
je 0x7f4862
movzx eax, byte [edi + ebx - 1]
test ecx, eax
je 0x7f4857
jmp 0x7f48cc
mov dword [esp + 0x34], edx
movzx eax, byte [edi + ebx - 1]
test ecx, eax
jne 0x7f48c2
mov edx, dword [esp + 0x3c]
lea ecx, [ebx - 4]
mov dword [esp + 0x30], ebx
shr ecx, 2
je 0x7f48b6
xor eax, eax
mov ebp, edi
mov dword [esp + 0x18], ecx
mov ebx, dword [ebp]
mov ecx, eax
mov dword [esp + 0xc], edx
inc eax
shl dword [esp + 0xc], cl
and cl, 0x1f
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov ecx, dword [esp + 0x18]
or edx, dword [esp + 0xc]
mov dword [ebp], ebx
not ebx
add ebp, 4
imul edx, ebx
cmp eax, ecx
jne 0x7f4887
mov ebx, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
or byte [edi + ebx - 1], al
mov eax, dword [esp + 0x34]
not al
and byte [edi + ebx - 1], al
mov ecx, dword [esp + 0x1c]
inc ecx
cmp ecx, 5
jne 0x7f47d8
mov ecx, dword [esp + 4]
call fcn.007fc3c0
mov eax, dword [esp + 0x10]
mov edx, 0xffffffff
mov ebp, dword [eax]
mov ecx, ebp
call fcn.007d37c0
mov dword [esp + 0x1c], eax
xor eax, eax
cmp dword [esp + 0x20], 1
sete al
push ebp
mov dword [esp + 0x10], eax
push eax
mov ebx, dword [esp + 8]
push ebx
push ebp
mov edi, dword [esp + 0x24]
push edi
push 0xbbb6f0
push edi
push 0xbbb710
push dword [esp + 0x24]
call fcn.00802190
add esp, 0x24
mov dword [esp + 0x18], ebp
push ebp
push dword [esp + 0x20]
push ebx
push ebx
push ebx
push 0xbbb7d0
push edi
push 0xbbb7f0
push dword [esp + 0x24]
call fcn.00802190
add esp, 0x24
mov ecx, esi
mov edx, 0xbbb920
push edi
call fcn.00797640
add esp, 4
test eax, eax
je 0x7f4ac4
mov edx, sub.KERNEL32.dll_WaitForSingleObject
xor eax, eax
movzx edi, byte [0xbbb97f]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt edi, eax
jb 0x7f4aa4
mov al, byte [0xbbb97f]
xor ecx, ecx
cmp edx, 2
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbb97f], ah
jne 0x7f4996
mov ecx, sub.KERNEL32.dll_WaitForSingleObject
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7f4a03
xor eax, eax
cmp ecx, 2
movzx edi, byte [0xbbb97f]
sete al
mov edx, eax
xor edx, 1
lea eax, [edx + eax*2]
bt edi, eax
jae 0x7f49e2
jmp 0x7f4aa4
xor eax, eax
cmp ecx, 2
movzx edi, byte [0xbbb97f]
sete al
mov ecx, eax
xor ecx, 0xad72e569
lea edx, [ecx + eax*2]
and dl, 3
movzx edx, dl
bt edi, edx
jb 0x7f4a7c
lea edi, [ecx + eax*2 + 0x1000]
mov edx, 0xbbb940
xor eax, eax
mov ebx, dword [edx]
mov ecx, eax
mov ebp, edi
inc eax
shl ebp, cl
xor cl, 0x1f
xor ebx, edi
shr edi, cl
mov dword [edx], ebx
or edi, ebp
not ebx
add edx, 4
imul edi, ebx
cmp eax, 0xf
jne 0x7f4a36
mov eax, sub.KERNEL32.dll_WaitForSingleObject
xor ecx, ecx
mov dl, 1
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [eax + ecx*2]
shl dl, cl
or byte [0xbbb97f], dl
mov eax, sub.KERNEL32.dll_WaitForSingleObject
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbbb97f], al
mov eax, dword [esp + 0x10]
push dword [eax]
push dword [esp + 4]
mov edi, dword [esp + 0x1c]
push edi
push 0xbbb940
push dword [esp + 0x14]
call fcn.00802190
add esp, 0x14
cmp dword [esp + 0x20], 1
je 0x7f4c23
mov edx, fcn.007ac3e0
movzx ecx, byte [0xbbba83]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
not al
add al, 0x20
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7f4c01
mov al, byte [0xbbba83]
cmp edx, 1
mov ah, 1
seta cl
not cl
add cl, 0x20
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbbba83], ah
jne 0x7f4afe
mov ecx, fcn.007ac3e0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
not dl
add dl, 0x20
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7f4b66
cmp ecx, 1
movzx edx, byte [0xbbba83]
seta al
not al
add al, 0x20
and al, 7
movzx eax, al
bt edx, eax
jae 0x7f4b46
jmp 0x7f4c01
xor edx, edx
cmp ecx, 1
movzx ecx, byte [0xbbba83]
seta dl
xor edx, 0x49f4dcef
add edx, 0x220
mov eax, edx
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7f4bdb
mov edi, 0xbbb980
xor eax, eax
mov ebx, dword [edi]
mov ecx, eax
mov ebp, edx
inc eax
shl ebp, cl
and cl, 0x1f
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov dword [edi], ebx
or edx, ebp
not ebx
add edi, 4
imul edx, ebx
cmp eax, 0x40
jne 0x7f4b94
mov eax, fcn.007ac3e0
imul eax, eax
and eax, 3
cmp eax, 1
mov al, 1
seta cl
not cl
add cl, 0x20
and cl, 7
shl al, cl
or byte [0xbbba83], al
mov eax, fcn.007ac3e0
imul eax, eax
and eax, 3
cmp eax, 1
mov al, 0xfe
seta cl
not cl
add cl, 0x20
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbbba83], al
mov eax, dword [esp]
push eax
mov edi, dword [esp + 0x18]
push edi
mov ecx, dword [esp + 0x20]
push ecx
push eax
push ecx
push edi
push 0xbbb980
push dword [esp + 0x20]
call fcn.00802190
add esp, 0x20
mov ebp, dword [esp + 0x2c]
test ebp, ebp
je 0x7f4c60
mov eax, dword [esp + 4]
mov ebx, dword [esp + 0x28]
mov edi, dword [eax + 0x2c]
mov ecx, ebx
inc edi
mov dword [eax + 0x2c], edi
mov edx, edi
push dword [esp]
call fcn.007f7880
add esp, 4
mov ecx, ebx
mov edx, 0xa7
push 0xfffffffffffffff4
push ebp
push 0
push 0
push edi
call fcn.007f75d0
add esp, 0x14
mov edi, dword [esp + 4]
mov edx, dword [esp + 0x20]
mov ecx, edi
call fcn.0083b040
mov edx, dword [esp + 0x14]
mov ecx, edi
push dword [esp + 0xc]
call fcn.0083b080
add esp, 4
mov edx, dword [esp + 8]
mov edi, dword [esp]
mov ecx, esi
call fcn.007cbc20
mov ecx, esi
mov edx, edi
call fcn.00780810
mov eax, dword [esp + 0x40]
mov dword [esi + 0x18], eax
add esp, 0x44
pop esi
pop edi
pop ebx
pop ebp
ret