Function at 0x8112d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov eax, dword [0xbd33e0]
mov edi, fcn.007d3420
mov esi, ecx
and edi, 1
inc edi
xor eax, esp
mov dword [esp + 0x18], eax
mov eax, edi
xor eax, fcn.007d3420
movzx ecx, byte [0xbb96c3]
sete al
not al
add al, 0x80
and al, 7
movzx eax, al
bt ecx, eax
jb 0x811448
mov al, byte [0xbb96c3]
mov ecx, edi
mov ah, 1
xor ecx, fcn.007d3420
sete cl
not cl
add cl, 0x80
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb96c3], ah
jne 0x811315
mov ecx, fcn.007d3420
and ecx, 1
inc ecx
mov edi, ecx
xor edi, fcn.007d3420
movzx edi, al
sete ah
not ah
add ah, 0x80
and ah, 7
xor ah, 7
movzx eax, ah
bt edi, eax
jae 0x811389
mov eax, ecx
movzx edi, byte [0xbb96c3]
xor eax, fcn.007d3420
sete al
not al
add al, 0x80
and al, 7
movzx eax, al
bt edi, eax
jae 0x811365
jmp 0x811448
xor ecx, fcn.007d3420
movzx ecx, byte [0xbb96c3]
sete al
not al
add al, 0x80
and al, 7
movzx eax, al
bt ecx, eax
jb 0x811422
mov eax, fcn.007d3420
xor ecx, ecx
and eax, 1
inc eax
xor eax, fcn.007d3420
mov eax, dword [0xbb96b0]
sete cl
xor ecx, 0x23e13e2f
add ecx, 0x280
xor eax, ecx
mov dword [0xbb96b0], eax
not eax
mov edi, dword [0xbb96b4]
imul eax, ecx
and cl, 7
lea ebx, [eax + eax]
xor edi, eax
shr eax, 0x1e
mov dword [0xbb96b4], edi
or ebx, eax
not edi
mov eax, dword [0xbb96b8]
imul edi, ebx
lea ebx, [edi*4]
xor eax, edi
shr edi, 0x1d
mov dword [0xbb96b8], eax
or ebx, edi
not eax
imul eax, ebx
xor dword [0xbb96bc], eax
mov ah, 1
shl ah, cl
or byte [0xbb96c3], ah
mov eax, fcn.007d3420
and eax, 1
inc eax
xor eax, fcn.007d3420
mov al, 0xfe
sete cl
not cl
add cl, 0x80
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb96c3], al
mov eax, fcn.0066e960
mov edi, 3
movzx ecx, byte [0xbb96f3]
sub edi, eax
mov eax, edi
xor eax, fcn.0066e960
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x811615
mov al, byte [0xbb96f3]
mov ecx, edi
mov ah, 1
xor ecx, fcn.0066e960
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb96f3], ah
jne 0x811478
mov edi, fcn.0066e960
mov ecx, 3
sub ecx, edi
mov edi, ecx
xor edi, fcn.0066e960
sete ah
or ah, 2
xor ah, 7
movzx edi, ah
movzx eax, al
bt eax, edi
jae 0x8114e1
mov eax, ecx
movzx edi, byte [0xbb96f3]
xor eax, fcn.0066e960
sete al
or al, 2
movzx eax, al
bt edi, eax
jae 0x8114c1
jmp 0x811615
xor ecx, fcn.0066e960
movzx ecx, byte [0xbb96f3]
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x8115f0
mov eax, fcn.0066e960
mov edi, 3
xor ecx, ecx
sub edi, eax
mov eax, dword [0xbb96d0]
xor edi, fcn.0066e960
sete cl
or ecx, 0x268fa3ca
add ecx, 0x860
xor eax, ecx
mov dword [0xbb96d0], eax
not eax
mov edi, dword [0xbb96d4]
imul eax, ecx
and cl, 7
lea ebx, [eax + eax]
xor edi, eax
shr eax, 0x1e
mov dword [0xbb96d4], edi
or ebx, eax
not edi
mov eax, dword [0xbb96d8]
imul edi, ebx
lea ebx, [edi*4]
xor eax, edi
shr edi, 0x1d
mov dword [0xbb96d8], eax
or ebx, edi
not eax
mov edi, dword [0xbb96dc]
imul eax, ebx
lea ebx, [eax*8]
xor edi, eax
shr eax, 0x1c
mov dword [0xbb96dc], edi
or ebx, eax
not edi
mov eax, dword [0xbb96e0]
imul edi, ebx
mov ebx, edi
shl ebx, 4
xor eax, edi
shr edi, 0x1b
mov dword [0xbb96e0], eax
or edi, ebx
not eax
mov ebp, dword [0xbb96e4]
imul eax, edi
mov ebx, eax
shl ebx, 5
xor ebp, eax
shr eax, 0x1a
mov dword [0xbb96e4], ebp
or eax, ebx
not ebp
imul ebp, eax
mov eax, dword [0xbb96e8]
mov ebx, ebp
shl ebx, 6
xor eax, ebp
shr ebp, 0x19
mov dword [0xbb96e8], eax
or ebp, ebx
not eax
imul eax, ebp
xor dword [0xbb96ec], eax
mov ah, 1
shl ah, cl
or byte [0xbb96f3], ah
mov eax, fcn.0066e960
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, fcn.0066e960
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbb96f3], al
mov eax, dword [esi]
shl edx, 4
mov ebx, dword [esp + 0x30]
mov edi, esp
mov eax, dword [eax + 0x10]
mov ebp, dword [eax + edx]
push 1
push 0xbb96b0
push edi
push 0x18
call fcn.00783420
add esp, 0x10
mov ecx, dword [esi]
mov edx, edi
push ebp
call fcn.00797640
add esp, 4
test eax, eax
je 0x81165e
push dword [esp + 0x34]
push ebx
push edi
push ebp
push 0xbb96d0
push esi
call fcn.00802190
add esp, 0x18
push 2
push 0xbb96b0
push edi
push 0x18
call fcn.00783420
add esp, 0x10
mov ecx, dword [esi]
mov edx, edi
push ebp
call fcn.00797640
add esp, 4
test eax, eax
je 0x811696
push dword [esp + 0x34]
push ebx
push edi
push ebp
push 0xbb96d0
push esi
call fcn.00802190
add esp, 0x18
push 3
push 0xbb96b0
push edi
push 0x18
call fcn.00783420
add esp, 0x10
mov ecx, dword [esi]
mov edx, edi
push ebp
call fcn.00797640
add esp, 4
test eax, eax
je 0x8116ce
push dword [esp + 0x34]
push ebx
push edi
push ebp
push 0xbb96d0
push esi
call fcn.00802190
add esp, 0x18
push 4
push 0xbb96b0
push edi
push 0x18
call fcn.00783420
add esp, 0x10
mov ecx, dword [esi]
mov edx, edi
push ebp
call fcn.00797640
add esp, 4
test eax, eax
je 0x811706
push dword [esp + 0x34]
push ebx
push edi
push ebp
push 0xbb96d0
push esi
call fcn.00802190
add esp, 0x18
mov ecx, dword [esp + 0x18]
xor ecx, esp
call fcn.00989fe9
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret