Function at 0x792e10
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov dword [esp + 0x20], edx
mov eax, fcn.007887d0
mov edx, 3
mov esi, ecx
sub edx, eax
xor eax, eax
movzx edi, byte [0xbad053]
mov ecx, edx
xor ecx, fcn.007887d0
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edi, eax
jb 0x792fa3
mov al, byte [0xbad053]
mov edi, edx
xor ecx, ecx
mov ah, 1
xor edi, fcn.007887d0
sete cl
mov ebx, ecx
not ebx
lea ecx, [ecx + ebx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad053], ah
jne 0x792e58
mov edx, fcn.007887d0
mov ecx, 3
movzx eax, al
sub ecx, edx
xor edx, edx
mov edi, ecx
xor edi, fcn.007887d0
sete dl
mov ebx, edx
not ebx
lea edx, [edx + ebx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x792ee0
mov edx, ecx
xor eax, eax
movzx edi, byte [0xbad053]
xor edx, fcn.007887d0
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2 + 4]
and al, 7
movzx eax, al
bt edi, eax
jae 0x792eb5
jmp 0x792fa3
xor eax, eax
xor ecx, fcn.007887d0
movzx edx, byte [0xbad053]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x792f74
mov eax, fcn.007887d0
mov ecx, 3
mov edi, dword [0xbad044]
sub ecx, eax
xor eax, eax
xor ecx, fcn.007887d0
sete al
mov ecx, eax
not ecx
and ecx, 0x223
lea ecx, [eax + ecx*2 - 0x28019a3c]
xor edi, ecx
mov edx, ecx
mov dword [0xbad044], edi
shr edx, 0x1f
not edi
mov ebx, dword [0xbad048]
or edx, ecx
and cl, 7
imul edx, edi
lea edi, [edx + edx]
xor ebx, edx
shr edx, 0x1e
mov dword [0xbad048], ebx
or edx, edi
not ebx
imul ebx, edx
mov dl, 1
xor dword [0xbad04c], ebx
shl dl, cl
or byte [0xbad053], dl
mov eax, fcn.007887d0
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.007887d0
sete al
mov ecx, eax
not ecx
lea ecx, [eax + ecx*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbad053], al
mov ecx, 0xbad044
call fcn.00777870
mov ebx, dword [esi + 8]
mov dword [esp + 0x18], eax
lea ecx, [ebx + 2]
mov edx, ecx
sar edx, 0x1f
call fcn.0077b7b0
mov esi, 0xc0a
test eax, eax
je 0x79419d
mov ecx, 0xfffffff1
mov esi, dword [0xc1f18c]
mov edi, eax
sub ecx, dword [esp + 0x18]
add ecx, ebx
test esi, esi
mov dword [esp + 0x14], ecx
jne 0x793095
mov eax, 0x77f380
xor ecx, ecx
mov dword [esp + 4], ebx
mov dword [esp + 8], edi
and eax, 1
inc eax
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
xor edx, edx
mov esi, dword [ecx*4 + 0xb4d370]
mov edi, dword [ecx*4 + 0xb4d4b0]
mov dword [esp + 0xc], ecx
xor eax, 0x77f380
mov eax, 1
sete dl
xor edx, 0xebbfb09b
add edx, 0x1008
xor edx, dword [ecx*4 + 0xb4c550]
mov ecx, edx
and cl, 7
movzx ebx, cl
shl eax, cl
xor cl, 7
mov dword [esp], ebx
mov ebx, 1
shl ebx, cl
movzx ecx, byte [esi + edi - 1]
mov ebp, dword [esp]
bt ecx, ebp
jb 0x7933cb
mov dword [esp + 0x1c], eax
mov al, byte [esi + edi - 1]
mov ecx, eax
or cl, bl
lock cmpxchg byte [esi + edi - 1], cl
jne 0x79306c
mov ecx, dword [esp + 0x1c]
movzx eax, al
test ebx, eax
je 0x793372
movzx eax, byte [esi + edi - 1]
test ecx, eax
je 0x793087
jmp 0x7933cb
mov ecx, esi
call fcn.00777870
test eax, eax
jle 0x793ad1
mov cl, byte [esi + eax - 1]
cmp cl, 0x2f
je 0x7930b3
cmp cl, 0x5c
je 0x7930b3
inc eax
cmp eax, dword [esp + 0x14]
jg 0x7931be
mov edx, fcn.007a18c0
movzx ecx, byte [0xbad07f]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x7931a9
mov al, byte [0xbad07f]
cmp edx, 3
mov ah, 1
sete cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad07f], ah
jne 0x7930e8
mov ecx, fcn.007a18c0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
or dl, 2
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x79313f
cmp ecx, 3
movzx edx, byte [0xbad07f]
sete al
or al, 2
movzx eax, al
bt edx, eax
jae 0x793126
jmp 0x7931a9
cmp ecx, 3
movzx edx, byte [0xbad07f]
sete al
or al, 2
movzx eax, al
bt edx, eax
jb 0x793188
mov eax, fcn.007a18c0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 1
sete cl
or ecx, 0xf8ecc18a
add ecx, 0xc80
xor dword [0xbad078], ecx
and cl, 7
shl al, cl
or byte [0xbad07f], al
mov eax, fcn.007a18c0
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
sete cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbad07f], al
push esi
push 0xbad078
push edi
push ebx
call fcn.00777b20
add esp, 0x10
jmp 0x793ad1
mov eax, fcn.00796b80
mov edx, 3
movzx ecx, byte [0xbad077]
sub edx, eax
mov eax, edx
xor eax, fcn.00796b80
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x793344
mov al, byte [0xbad077]
mov ecx, edx
mov ah, 1
xor ecx, fcn.00796b80
sete cl
not cl
and cl, 3
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad077], ah
jne 0x7931f0
mov edx, fcn.00796b80
mov ecx, 3
movzx eax, al
sub ecx, edx
mov edx, ecx
xor edx, fcn.00796b80
sete dl
not dl
and dl, 3
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x79325f
mov eax, ecx
movzx edx, byte [0xbad077]
xor eax, fcn.00796b80
sete al
not al
and al, 3
movzx eax, al
bt edx, eax
jae 0x79323d
jmp 0x793344
xor ecx, fcn.00796b80
movzx ecx, byte [0xbad077]
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x79331d
mov eax, fcn.00796b80
mov edx, 3
xor ecx, ecx
sub edx, eax
mov eax, dword [0xbad060]
xor edx, fcn.00796b80
sete cl
xor ecx, 0x23309d93
add ecx, 0x440
xor eax, ecx
mov dword [0xbad060], eax
not eax
mov edx, dword [0xbad064]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbad064], edx
or esi, eax
not edx
mov eax, dword [0xbad068]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbad068], eax
or esi, edx
not eax
mov edx, dword [0xbad06c]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbad06c], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbad070], edx
or byte [0xbad077], al
mov eax, fcn.00796b80
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, fcn.00796b80
sete cl
not cl
and cl, 3
xor cl, 7
rol al, cl
and byte [0xbad077], al
push edi
call fcn.00775660
add esp, 4
mov esi, 1
mov ecx, 1
xor edx, edx
push 0x34db
push 0
push 0xbad060
call fcn.007911b0
add esp, 0xc
jmp 0x79419d
mov dword [esp + 0x24], ebx
movzx eax, byte [esi + edi - 1]
test ecx, eax
jne 0x7933c1
lea ecx, [edi - 4]
shr ecx, 2
je 0x7933b9
xor eax, eax
mov ebx, esi
mov dword [esp + 0x10], ecx
mov ebp, dword [ebx]
mov ecx, eax
mov dword [esp], edx
inc eax
shl dword [esp], cl
and cl, 0x1f
xor cl, 0x1f
xor ebp, edx
shr edx, cl
mov ecx, dword [esp + 0x10]
or edx, dword [esp]
mov dword [ebx], ebp
not ebp
add ebx, 4
imul edx, ebp
cmp eax, ecx
jne 0x79338f
mov eax, dword [esp + 0x1c]
or byte [esi + edi - 1], al
mov eax, dword [esp + 0x24]
not al
and byte [esi + edi - 1], al
mov ecx, dword [esp + 0xc]
inc ecx
cmp ecx, 0x50
jne 0x793004
mov eax, dword [0xc1f184]
cmp eax, 2
je 0x7933f0
call fcn.007781a0
test eax, eax
je 0x793794
mov ebx, dword [esp + 4]
xor edx, edx
lea ecx, [ebx + ebx]
call fcn.0077b7b0
mov edi, dword [esp + 8]
test eax, eax
jne 0x793419
push edi
call fcn.00775660
add esp, 4
mov esi, 0xc0a
jmp 0x79419d
mov esi, eax
push eax
push ebx
call dword [0xbabca0]
test eax, eax
jne 0x793605
mov edx, fcn.00781d80
mov ebp, esi
mov esi, fcn.00781d80
xor eax, eax
movzx ebx, byte [0xbad097]
or edx, 2
xor esi, 2
mov ecx, edx
add ecx, esi
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt ebx, eax
jb 0x7935d0
mov al, byte [0xbad097]
mov edi, edx
xor ecx, ecx
mov ah, 1
add edi, esi
sete cl
mov ebx, ecx
xor ebx, 3
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad097], ah
jne 0x793463
mov ecx, fcn.00781d80
mov edx, fcn.00781d80
xor ebx, ebx
movzx eax, al
or ecx, 2
xor edx, 2
mov esi, ecx
add esi, edx
sete bl
mov esi, ebx
xor ebx, 3
lea ebx, [ebx + esi*2]
xor bl, 7
movzx esi, bl
bt eax, esi
jae 0x7934dc
mov edi, dword [esp + 8]
mov esi, ecx
xor eax, eax
add esi, edx
movzx esi, byte [0xbad097]
sete al
mov ebx, eax
xor ebx, 3
lea eax, [ebx + eax*2]
bt esi, eax
jae 0x7934ba
jmp 0x7935d0
xor eax, eax
add ecx, edx
movzx edx, byte [0xbad097]
mov edi, dword [esp + 8]
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x7935a4
mov eax, fcn.00781d80
mov ecx, fcn.00781d80
xor edx, edx
xor ecx, 2
or eax, 2
add eax, ecx
sete dl
mov eax, edx
xor eax, 0xa57be51b
lea ecx, [eax + edx*2 + 0xc0]
mov eax, dword [0xbad080]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbad080], eax
not eax
imul edx, eax
mov eax, dword [0xbad084]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbad084], eax
or esi, edx
not eax
mov edx, dword [0xbad088]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbad088], edx
or esi, eax
not edx
mov eax, dword [0xbad08c]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbad08c], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbad090], eax
or byte [0xbad097], dl
mov eax, fcn.00781d80
mov ecx, fcn.00781d80
xor edx, edx
xor ecx, 2
or eax, 2
add eax, ecx
sete dl
mov eax, edx
xor eax, 3
lea ecx, [eax + edx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbad097], al
push ebp
call fcn.00775660
add esp, 4
push edi
call fcn.00775660
add esp, 4
call dword [0xbabc58]
mov esi, 0x190a
mov ecx, 0x190a
mov edx, eax
push 0x353e
push 0
push 0xbad080
jmp 0x793365
mov ecx, esi
call fcn.007784c0
test eax, eax
mov dword [esp], eax
jne 0x793621
push esi
call fcn.00775660
add esp, 4
jmp 0x793406
mov edx, fcn.007c59c0
mov eax, fcn.007c59c0
mov dword [esp + 0xc], esi
and edx, 1
movzx esi, byte [0xbad09f]
xor edx, eax
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt esi, eax
jb 0x79376f
mov al, byte [0xbad09f]
xor ecx, ecx
cmp edx, 0xffffffff
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 1
lea ebx, [ecx + ebx*2]
mov cl, 7
or bl, 4
sub cl, bl
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad09f], ah
jne 0x79365e
mov ecx, fcn.007c59c0
mov edx, fcn.007c59c0
mov ah, 7
and ecx, 1
xor ecx, edx
xor edx, edx
cmp ecx, 0xffffffff
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2]
or dl, 4
sub ah, dl
movzx edx, ah
movzx eax, al
bt eax, edx
jae 0x7936e0
mov ebx, dword [esp + 4]
xor eax, eax
cmp ecx, 0xffffffff
movzx esi, byte [0xbad09f]
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2]
or al, 4
movzx eax, al
bt esi, eax
jae 0x7936ba
jmp 0x79376f
xor eax, eax
cmp ecx, 0xffffffff
movzx edx, byte [0xbad09f]
mov ebx, dword [esp + 4]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x793740
mov ecx, fcn.007c59c0
mov eax, fcn.007c59c0
and ecx, 1
xor ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
sete al
mov ecx, eax
not ecx
and ecx, 0x511
lea ecx, [eax + ecx*2 + 0x5a2562ec]
mov al, 1
xor dword [0xbad098], ecx
and cl, 7
shl al, cl
or byte [0xbad09f], al
mov ecx, fcn.007c59c0
mov eax, fcn.007c59c0
mov dl, 0xfe
and ecx, 1
xor ecx, eax
xor eax, eax
cmp ecx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
mov cl, 7
or al, 4
sub cl, al
rol dl, cl
and byte [0xbad09f], dl
mov esi, dword [esp]
push esi
push 0xbad098
push edi
push ebx
call fcn.00777b20
add esp, 0x10
push esi
call fcn.00775660
add esp, 4
push dword [esp + 0xc]
jmp 0x793ac9
mov ebx, dword [esp + 4]
mov edx, ebx
mov ecx, ebx
sar edx, 0x1f
call fcn.0077b7b0
mov edi, dword [esp + 8]
test eax, eax
je 0x793406
mov esi, eax
push eax
push ebx
call dword [0xbabc94]
test eax, eax
jne 0x793967
mov edx, 0x830b20
movzx ecx, byte [0xbad0b7]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
or al, 4
add al, 4
and al, 7
movzx eax, al
bt ecx, eax
jb 0x79393b
mov al, byte [0xbad0b7]
cmp edx, 1
mov ah, 1
seta cl
or cl, 4
add cl, 4
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad0b7], ah
jne 0x7937f1
mov ecx, 0x830b20
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
or dl, 4
add dl, 4
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x79385b
cmp ecx, 1
movzx edx, byte [0xbad0b7]
seta al
or al, 4
add al, 4
and al, 7
movzx eax, al
bt edx, eax
jae 0x79383b
jmp 0x79393b
cmp ecx, 1
movzx ecx, byte [0xbad0b7]
seta al
or al, 4
add al, 4
and al, 7
movzx eax, al
bt ecx, eax
jb 0x793914
mov eax, 0x830b20
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
mov eax, dword [0xbad0a0]
seta cl
or ecx, 0x259330bc
add ecx, 0xc04
xor eax, ecx
mov dword [0xbad0a0], eax
not eax
mov edx, dword [0xbad0a4]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbad0a4], edx
or esi, eax
not edx
mov eax, dword [0xbad0a8]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbad0a8], eax
or esi, edx
not eax
mov edx, dword [0xbad0ac]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbad0ac], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbad0b0], edx
or byte [0xbad0b7], al
mov eax, 0x830b20
imul eax, eax
and eax, 3
cmp eax, 1
mov al, 0xfe
seta cl
or cl, 4
add cl, 4
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbad0b7], al
push edi
call fcn.00775660
add esp, 4
call dword [0xbabc58]
mov esi, 0x190a
mov ecx, 0x190a
mov edx, eax
push 0x3559
push 0
push 0xbad0a0
jmp 0x793365
call dword [0xbabb20]
mov ecx, esi
mov edx, eax
call fcn.00778630
test eax, eax
je 0x793406
mov edx, fcn.007f6a70
mov esi, eax
xor eax, eax
movzx ebp, byte [0xbad0bf]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
and al, 7
movzx eax, al
bt ebp, eax
jb 0x793ab8
mov al, byte [0xbad0bf]
xor ecx, ecx
cmp edx, 2
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 5
lea ecx, [ebx + ecx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad0bf], ah
jne 0x7939b6
mov ecx, fcn.007f6a70
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
xor ebx, 5
lea edx, [ebx + edx*2 + 4]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x793a35
mov ebx, dword [esp + 4]
xor eax, eax
cmp ecx, 2
movzx ebp, byte [0xbad0bf]
sete al
mov edx, eax
xor edx, 5
lea eax, [edx + eax*2 + 4]
and al, 7
movzx eax, al
bt ebp, eax
jae 0x793a0e
jmp 0x793ab8
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbad0bf]
mov ebx, dword [esp + 4]
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
and al, 7
movzx eax, al
bt edx, eax
jb 0x793a8c
mov eax, fcn.007f6a70
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 0xda4296fd
lea ecx, [eax + ecx*2 + 4]
mov al, 1
xor dword [0xbad0b8], ecx
and cl, 7
shl al, cl
or byte [0xbad0bf], al
mov eax, fcn.007f6a70
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 5
lea ecx, [eax + ecx*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbad0bf], al
push esi
push 0xbad0b8
push edi
push ebx
call fcn.00777b20
add esp, 0x10
push esi
call fcn.00775660
add esp, 4
mov ecx, dword [esp + 0x14]
mov edx, edi
inc ecx
call fcn.007941b0
test eax, eax
jne 0x793c89
mov edx, 0x98b290
movzx ecx, byte [0xbad0d7]
imul edx, edx
and edx, 3
cmp edx, 2
sete al
or al, 4
add al, 0x84
and al, 7
movzx eax, al
bt ecx, eax
jb 0x793c63
mov al, byte [0xbad0d7]
cmp edx, 2
mov ah, 1
sete cl
or cl, 4
add cl, 0x84
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad0d7], ah
jne 0x793b14
mov ecx, 0x98b290
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
or dl, 4
add dl, 0x84
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x793b7e
cmp ecx, 2
movzx edx, byte [0xbad0d7]
sete al
or al, 4
add al, 0x84
and al, 7
movzx eax, al
bt edx, eax
jae 0x793b5e
jmp 0x793c63
cmp ecx, 2
movzx ecx, byte [0xbad0d7]
sete al
or al, 4
add al, 0x84
and al, 7
movzx eax, al
bt ecx, eax
jb 0x793c3c
mov eax, 0x98b290
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov eax, dword [0xbad0c0]
sete cl
or ecx, 0x4c99828c
add ecx, 0x1084
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbad0c0], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbad0c4]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbad0c4], eax
or esi, edx
not eax
mov edx, dword [0xbad0c8]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbad0c8], edx
or esi, eax
not edx
mov eax, dword [0xbad0cc]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbad0cc], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
xor dword [0xbad0d0], eax
or byte [0xbad0d7], dl
mov eax, 0x98b290
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
or cl, 4
add cl, 0x84
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbad0d7], al
push edi
call fcn.00775660
add esp, 4
mov esi, 1
mov ecx, 1
xor edx, edx
push 0x3570
push 0
push 0xbad0c0
jmp 0x793365
mov ecx, edi
call fcn.00777870
mov edx, eax
mov eax, dword [esp + 0x18]
lea eax, [eax + edx + 0xf]
cmp eax, ebx
jle 0x793e7e
mov edx, 0x7999a0
xor eax, eax
movzx esi, byte [0xbad0f7]
not edx
and edx, 1
mov ecx, edx
add ecx, 0x7999a0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt esi, eax
jb 0x793e58
mov al, byte [0xbad0f7]
mov esi, edx
xor ecx, ecx
mov ah, 1
add esi, 0x7999a0
sete cl
mov ebx, ecx
xor ebx, 1
lea ebx, [ecx + ebx*2]
mov cl, 7
or bl, 4
sub cl, bl
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad0f7], ah
jne 0x793cdb
mov ecx, 0x7999a0
xor edx, edx
mov ah, 7
not ecx
and ecx, 1
mov esi, ecx
add esi, 0x7999a0
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2]
or dl, 4
sub ah, dl
movzx edx, ah
movzx eax, al
bt eax, edx
jae 0x793d63
mov edx, ecx
xor eax, eax
movzx esi, byte [0xbad0f7]
add edx, 0x7999a0
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2]
or al, 4
movzx eax, al
bt esi, eax
jae 0x793d38
jmp 0x793e58
xor eax, eax
add ecx, 0x7999a0
movzx edx, byte [0xbad0f7]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x793e2c
mov ecx, 0x7999a0
xor eax, eax
not ecx
and ecx, 1
add ecx, 0x7999a0
sete al
mov ecx, eax
not ecx
and ecx, 0x4c9
lea ecx, [eax + ecx*2 + 0x262ef124]
mov eax, dword [0xbad0e0]
xor eax, ecx
mov dword [0xbad0e0], eax
not eax
mov edx, dword [0xbad0e4]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbad0e4], edx
or esi, eax
not edx
mov eax, dword [0xbad0e8]
imul edx, esi
lea esi, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbad0e8], eax
or esi, edx
not eax
mov edx, dword [0xbad0ec]
imul eax, esi
lea esi, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbad0ec], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbad0f0], edx
or byte [0xbad0f7], al
mov eax, 0x7999a0
xor ecx, ecx
mov dl, 0xfe
not eax
and eax, 1
add eax, 0x7999a0
sete cl
mov eax, ecx
xor eax, 1
lea eax, [ecx + eax*2]
mov cl, 7
or al, 4
sub cl, al
rol dl, cl
and byte [0xbad0f7], dl
push edi
call fcn.00775660
add esp, 4
mov esi, 1
mov ecx, 1
xor edx, edx
push 0x3582
push 0
push 0xbad0e0
jmp 0x793365
mov esi, fcn.007b09b0
mov eax, fcn.007b09b0
movzx ecx, byte [0xbad107]
and esi, 1
xor esi, eax
cmp esi, 0xffffffff
sete al
not al
add al, 0x20
and al, 7
movzx eax, al
bt ecx, eax
jb 0x793fcc
mov al, byte [0xbad107]
cmp esi, 0xffffffff
mov ah, 1
sete cl
not cl
add cl, 0x20
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad107], ah
jne 0x793eb1
mov ecx, fcn.007b09b0
mov esi, fcn.007b09b0
and ecx, 1
xor ecx, esi
cmp ecx, 0xffffffff
sete ah
not ah
add ah, 0x20
and ah, 7
xor ah, 7
movzx esi, ah
movzx eax, al
bt eax, esi
jae 0x793f1d
cmp ecx, 0xffffffff
movzx esi, byte [0xbad107]
sete al
not al
add al, 0x20
and al, 7
movzx eax, al
bt esi, eax
jae 0x793efd
jmp 0x793fcc
cmp ecx, 0xffffffff
movzx ecx, byte [0xbad107]
sete al
not al
add al, 0x20
and al, 7
movzx eax, al
bt ecx, eax
jb 0x793fa2
mov esi, fcn.007b09b0
mov eax, fcn.007b09b0
xor ecx, ecx
mov ebp, ebx
mov ebx, edi
and esi, 1
xor esi, eax
mov eax, dword [0xbad0f8]
cmp esi, 0xffffffff
sete cl
xor ecx, 0x115004cf
or ecx, 0x220
xor eax, ecx
mov dword [0xbad0f8], eax
not eax
mov esi, dword [0xbad0fc]
imul eax, ecx
and cl, 7
lea edi, [eax + eax]
xor esi, eax
shr eax, 0x1e
mov dword [0xbad0fc], esi
or edi, eax
not esi
mov al, 1
imul esi, edi
shl al, cl
mov edi, ebx
mov ebx, ebp
xor dword [0xbad100], esi
or byte [0xbad107], al
mov ecx, fcn.007b09b0
mov eax, fcn.007b09b0
and ecx, 1
xor ecx, eax
mov al, 0xfe
cmp ecx, 0xffffffff
sete cl
not cl
add cl, 0x20
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbad107], al
add ebx, 0xfffffff2
lea eax, [edi + edx]
sub ebx, edx
push 0xbad0f8
push eax
push ebx
call fcn.00777b20
add esp, 0xc
mov ecx, edi
call fcn.00777870
mov ebp, eax
mov esi, eax
add ebp, edi
push ebp
push 0xf
call fcn.00777c70
add esp, 8
mov ebx, fcn.0077c390
xor eax, eax
mov dword [esp + 8], edi
imul ebx, ebx
and ebx, 3
mov dword [esp], eax
xor eax, eax
cmp ebx, 2
mov dword [esp + 0xc], esi
sete al
movzx edx, byte [0xbad043]
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt edx, eax
jb 0x794149
mov al, byte [0xbad043]
xor ecx, ecx
cmp ebx, 2
mov ah, 1
sete cl
mov edx, ecx
xor edx, 1
lea edx, [ecx + edx*2]
mov cl, 7
or dl, 4
sub cl, dl
shl ah, cl
or ah, al
lock cmpxchg byte [0xbad043], ah
jne 0x79403d
xor ecx, ecx
cmp ebx, 2
movzx eax, al
sete cl
mov edx, ecx
xor edx, 1
lea ecx, [ecx + edx*2]
mov dl, 7
or cl, 4
sub dl, cl
movzx ecx, dl
bt eax, ecx
jae 0x7940ac
xor eax, eax
cmp ebx, 2
movzx edx, byte [0xbad043]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
or al, 4
movzx eax, al
bt edx, eax
jae 0x794086
jmp 0x794149
xor eax, eax
cmp ebx, 2
movzx esi, byte [0xbad043]
sete al
mov ecx, eax
not ecx
and ecx, 0xb1
lea edx, [eax + ecx*2 - 0x122c85b4]
mov eax, edx
and al, 7
movzx eax, al
bt esi, eax
jb 0x794129
mov esi, 0xbad000
xor eax, eax
mov dword [esp + 0x10], ebp
mov edi, dword [esi]
mov ecx, eax
mov ebp, edx
inc eax
shl ebp, cl
xor cl, 0x1f
xor edi, edx
shr edx, cl
mov dword [esi], edi
or edx, ebp
not edi
add esi, 4
imul edx, edi
cmp eax, 0x10
jne 0x7940e3
xor eax, eax
cmp ebx, 2
sete al
mov ecx, eax
xor ecx, 1
lea ecx, [eax + ecx*2]
mov al, 1
or cl, 4
shl al, cl
or byte [0xbad043], al
mov edi, dword [esp + 8]
mov ebp, dword [esp + 0x10]
xor eax, eax
cmp ebx, 2
mov dl, 0xfe
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2]
mov cl, 7
or al, 4
sub cl, al
rol dl, cl
and byte [0xbad043], dl
mov cl, byte [ebp]
mov eax, ecx
shr al, 1
movzx eax, al
imul eax, eax, 0x85
shr eax, 0xc
mov edx, eax
shl dl, 6
movzx edx, dl
sub edx, eax
sub edx, eax
sub cl, dl
movzx eax, cl
mov ecx, dword [esp + 0xc]
mov al, byte [eax + 0xbad000]
lea esi, [ecx + 1]
mov byte [ebp], al
mov eax, dword [esp]
lea ebp, [edi + ecx + 1]
inc eax
cmp eax, 0xf
jne 0x79400c
mov eax, dword [esp + 0x20]
xor esi, esi
mov word [edi + ecx + 1], 0
mov dword [eax], edi
mov eax, esi
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret