Function at 0x81e830
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xac
mov eax, dword [0xbd33e0]
xor eax, esp
mov dword [esp + 0xa8], eax
mov eax, dword [ecx + 0x74]
test eax, eax
cmove eax, ecx
cmp byte [eax + 0xc7], 2
jne 0x81fd73
mov eax, dword [esp + 0xc0]
mov ebp, edx
mov edx, dword [eax + 0x48]
mov esi, dword [edx + 0x24]
test esi, 0x2000
mov dword [esp], esi
jne 0x81fd73
movzx ebx, word [esp + 0xc4]
test bl, 0x20
jne 0x81fd73
movzx eax, byte [eax + 0x34]
mov dword [esp + 8], edx
mov edx, dword [ecx]
mov dword [esp + 0x24], ecx
mov dword [esp + 4], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0x20], eax
mov eax, dword [esp]
mov ecx, eax
and ecx, 0x30
mov dword [esp + 0x10], ecx
jne 0x81e8c5
test eax, 0x400
jne 0x81e8ea
mov eax, dword [esp + 8]
cmp word [eax + 0x18], 0
je 0x81e8ea
lea eax, [esp + 0x44]
lea ecx, [esp + 0x2c]
push 0x3b9aca00
push 0x64
push eax
call fcn.007832c0
add esp, 0xc
mov al, 1
mov edi, 0xbb9e40
mov dword [esp + 0xc], eax
jmp 0x81e914
lea eax, [esp + 0x44]
lea ecx, [esp + 0x2c]
push 0x3b9aca00
push 0x64
push eax
call fcn.007832c0
add esp, 0xc
test bl, 3
jne 0x81e8dd
mov edi, 0xbb9e4c
mov dword [esp + 0xc], 0
mov eax, fcn.007ffa10
mov esi, 3
movzx edx, byte [0xbb9e4b]
sub esi, eax
xor eax, eax
mov ecx, esi
xor ecx, fcn.007ffa10
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x81ea6d
mov al, byte [0xbb9e4b]
mov ebx, esi
xor ecx, ecx
mov ah, 1
xor ebx, fcn.007ffa10
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb9e4b], ah
jne 0x81e94b
mov esi, fcn.007ffa10
mov ecx, 3
xor edx, edx
movzx eax, al
sub ecx, esi
mov esi, ecx
xor esi, fcn.007ffa10
sete dl
mov ebx, edx
xor ebx, 1
lea edx, [edx + ebx*2 + 2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x81e9cb
mov edx, ecx
xor eax, eax
movzx esi, byte [0xbb9e4b]
xor edx, fcn.007ffa10
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 2]
bt esi, eax
jae 0x81e9a4
jmp 0x81ea6d
xor eax, eax
xor ecx, fcn.007ffa10
movzx edx, byte [0xbb9e4b]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 2]
bt edx, eax
jb 0x81ea40
mov eax, fcn.007ffa10
mov ecx, 3
mov esi, dword [0xbb9e40]
sub ecx, eax
xor eax, eax
xor ecx, fcn.007ffa10
sete al
mov ecx, eax
not ecx
and ecx, 0x305
lea ecx, [eax + ecx*2 + 0x53473ca2]
mov edx, ecx
xor esi, ecx
shr edx, 0x1f
mov dword [0xbb9e40], esi
not esi
or edx, ecx
and cl, 7
imul edx, esi
xor dword [0xbb9e44], edx
mov dl, 1
shl dl, cl
or byte [0xbb9e4b], dl
mov eax, fcn.007ffa10
mov ecx, 3
sub ecx, eax
xor eax, eax
xor ecx, fcn.007ffa10
sete al
mov ecx, eax
xor ecx, 1
lea ecx, [eax + ecx*2 + 2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb9e4b], al
mov esi, sub.KERNEL32.dll_GetSystemTime
movzx ecx, byte [0xbb9e57]
imul esi, esi
and esi, 3
cmp esi, 3
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x81eb67
mov al, byte [0xbb9e57]
cmp esi, 3
mov dl, 1
sete cl
or cl, 6
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb9e57], dl
jne 0x81ea98
mov ecx, sub.KERNEL32.dll_GetSystemTime
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
or dl, 6
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x81eaef
cmp ecx, 3
movzx edx, byte [0xbb9e57]
sete al
or al, 6
movzx eax, al
bt edx, eax
jae 0x81ead6
jmp 0x81eb67
cmp ecx, 3
movzx edx, byte [0xbb9e57]
sete al
or al, 6
movzx eax, al
bt edx, eax
jb 0x81eb46
mov eax, sub.KERNEL32.dll_GetSystemTime
xor ecx, ecx
mov dl, 1
imul eax, eax
and eax, 3
cmp eax, 3
mov eax, dword [0xbb9e4c]
sete cl
or ecx, 0xe6733cde
xor eax, ecx
and cl, 7
shl dl, cl
mov dword [0xbb9e4c], eax
not eax
imul eax, eax, 0xe6733cdf
xor dword [0xbb9e50], eax
or byte [0xbb9e57], dl
mov eax, sub.KERNEL32.dll_GetSystemTime
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0xbb9e57], al
lea ebx, [esp + 0x2c]
push edi
push ebx
call fcn.00783000
add esp, 8
mov eax, dword [esp + 4]
lea esi, [eax + eax*8]
mov edi, dword [ebp + esi*8 + 0x1c]
mov dword [esp + 4], esi
test edi, edi
je 0x81ed38
mov esi, fcn.00810d50
xor eax, eax
movzx edx, byte [str.4moo]
imul esi, esi
and esi, 3
cmp esi, 2
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edx, eax
jb 0x81ed1e
mov al, byte [str.4moo]
xor ecx, ecx
cmp esi, 2
mov ah, 1
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 6]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [str.4moo], ah
jne 0x81ebc2
mov ecx, fcn.00810d50
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, [edx + ebx*2 + 6]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x81ec41
lea ebx, [esp + 0x2c]
xor eax, eax
cmp ecx, 2
movzx esi, byte [str.4moo]
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 6]
and al, 7
movzx eax, al
bt esi, eax
jae 0x81ec1a
jmp 0x81ed1e
xor eax, eax
cmp ecx, 2
movzx edx, byte [str.4moo]
lea ebx, [esp + 0x2c]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edx, eax
jb 0x81ecf2
mov ecx, fcn.00810d50
xor eax, eax
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete al
mov ecx, eax
not ecx
and ecx, 0x601
lea ecx, [eax + ecx*2 - 0x4ab30612]
mov eax, dword [0xbb9e60]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb9e60], eax
not eax
imul edx, eax
mov eax, dword [0xbb9e64]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb9e64], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb9e68]
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb9e68], edx
or eax, esi
not edx
imul edx, eax
xor dword [0xbb9e6c], edx
mov dl, 1
shl dl, cl
or byte [str.4moo], dl
mov eax, fcn.00810d50
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 1
lea ecx, [ecx + eax*2 + 6]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [str.4moo], al
push dword [edi + 0x10]
push 0xbb9e60
push ebx
call fcn.00783530
add esp, 0xc
mov esi, dword [esp + 4]
jmp 0x81ee8f
mov edx, fcn.007ad680
movzx ecx, byte [0xbb9e83]
not edx
and edx, 1
mov eax, edx
add eax, fcn.007ad680
sete al
not al
and al, 5
movzx eax, al
bt ecx, eax
jb 0x81ee7d
mov al, byte [0xbb9e83]
mov ecx, edx
mov ah, 1
add ecx, fcn.007ad680
sete cl
not cl
and cl, 5
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb9e83], ah
jne 0x81ed68
mov ecx, fcn.007ad680
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, fcn.007ad680
sete dl
not dl
and dl, 5
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x81edd5
mov eax, ecx
movzx edx, byte [0xbb9e83]
add eax, fcn.007ad680
sete al
not al
and al, 5
movzx eax, al
bt edx, eax
jae 0x81edb3
jmp 0x81ee7d
add ecx, fcn.007ad680
movzx ecx, byte [0xbb9e83]
sete al
not al
and al, 5
movzx eax, al
bt ecx, eax
jb 0x81ee59
mov eax, fcn.007ad680
xor ecx, ecx
mov edi, esi
not eax
and eax, 1
add eax, fcn.007ad680
mov eax, dword [0xbb9e74]
sete cl
xor ecx, 0xc82e34ad
add ecx, 0x6a0
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb9e74], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [str._R__]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [str._R__], eax
or edx, esi
not eax
mov esi, edi
imul eax, edx
mov dl, 1
xor dword [0xbb9e7c], eax
shl dl, cl
or byte [0xbb9e83], dl
mov eax, fcn.007ad680
not eax
and eax, 1
add eax, fcn.007ad680
mov al, 0xfe
sete cl
not cl
and cl, 5
xor cl, 7
rol al, cl
and byte [0xbb9e83], al
push dword [ebp + esi*8 + 0x10]
push 0xbb9e74
push ebx
call fcn.00783530
add esp, 0xc
mov edx, dword [ebp + esi*8 + 0x14]
test edx, edx
je 0x81efca
mov esi, 0x8408b0
mov edi, 0x8408b0
movzx ecx, byte [0xbb9e8f]
or esi, 2
xor edi, 2
mov eax, esi
add eax, edi
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x81efb7
mov al, byte [0xbb9e8f]
mov ecx, esi
mov ah, 1
add ecx, edi
setne cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb9e8f], ah
jne 0x81eecc
mov ecx, 0x8408b0
mov esi, 0x8408b0
or ecx, 2
xor esi, 2
mov edi, ecx
add edi, esi
setne ah
or ah, 4
xor ah, 7
movzx edi, ah
movzx eax, al
bt eax, edi
jae 0x81ef2e
mov eax, ecx
movzx edi, byte [0xbb9e8f]
add eax, esi
setne al
or al, 4
movzx eax, al
bt edi, eax
jae 0x81ef11
jmp 0x81efb7
add ecx, esi
movzx ecx, byte [0xbb9e8f]
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x81ef92
mov eax, 0x8408b0
mov esi, 0x8408b0
xor ecx, ecx
xor esi, 2
or eax, 2
add eax, esi
mov eax, dword [0xbb9e84]
sete cl
xor ecx, 0xe4f98ef1
add ecx, 0x204
mov esi, ecx
xor eax, ecx
shr esi, 0x1f
mov dword [0xbb9e84], eax
not eax
or esi, ecx
and cl, 7
imul esi, eax
mov ah, 1
xor dword [0xbb9e88], esi
shl ah, cl
or byte [0xbb9e8f], ah
mov eax, 0x8408b0
mov ecx, 0x8408b0
xor ecx, 2
or eax, 2
add eax, ecx
mov al, 0xfe
setne cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb9e8f], al
push edx
push 0xbb9e84
push ebx
call fcn.00783530
add esp, 0xc
mov esi, dword [esp + 4]
mov ecx, dword [esp]
test ecx, 0x500
jne 0x81f460
mov edx, fcn.00793640
xor eax, eax
movzx edi, byte [0xbb9f17]
and edx, 1
inc edx
mov ecx, edx
xor ecx, fcn.00793640
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edi, eax
jb 0x81f18c
mov al, byte [0xbb9f17]
mov edi, esi
mov esi, edx
xor ecx, ecx
mov ah, 1
xor esi, fcn.00793640
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 [0xbb9f17], ah
jne 0x81f012
mov ecx, fcn.00793640
xor edx, edx
movzx eax, al
and ecx, 1
inc ecx
mov esi, ecx
xor esi, fcn.00793640
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 0x81f096
mov esi, edi
mov edx, ecx
xor eax, eax
movzx edi, byte [0xbb9f17]
xor edx, fcn.00793640
sete al
mov edx, eax
not edx
lea eax, [edx + eax*2]
and al, 7
movzx eax, al
bt edi, eax
jae 0x81f06c
jmp 0x81f18c
xor eax, eax
xor ecx, fcn.00793640
movzx edx, byte [0xbb9f17]
mov esi, edi
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x81f162
mov eax, fcn.00793640
xor ecx, ecx
and eax, 1
inc eax
xor eax, fcn.00793640
sete cl
mov eax, ecx
xor eax, 0x7bacfaff
lea ecx, [eax + ecx*2 + 0xa00]
mov eax, dword [0xbb9f00]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb9f00], eax
not eax
imul edx, eax
mov eax, dword [0xbb9f04]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb9f04], eax
or esi, edx
not eax
mov edx, dword [0xbb9f08]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb9f08], edx
or esi, eax
not edx
mov eax, dword [0xbb9f0c]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbb9f0c], eax
or esi, edx
not eax
mov dl, 1
imul eax, esi
shl dl, cl
mov esi, edi
xor dword [0xbb9f10], eax
or byte [0xbb9f17], dl
mov eax, fcn.00793640
xor ecx, ecx
and eax, 1
inc eax
xor eax, fcn.00793640
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 [0xbb9f17], al
mov eax, fcn.007a4360
mov edx, 3
movzx ecx, byte [0xbb9f27]
sub edx, eax
mov eax, edx
xor eax, fcn.007a4360
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x81f2ca
mov al, byte [0xbb9f27]
mov ecx, edx
mov ah, 1
xor ecx, fcn.007a4360
setne cl
or cl, 4
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb9f27], ah
jne 0x81f1bc
mov edx, fcn.007a4360
mov ecx, 3
movzx eax, al
sub ecx, edx
mov edx, ecx
xor edx, fcn.007a4360
setne dl
or dl, 4
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x81f225
mov eax, ecx
movzx edx, byte [0xbb9f27]
xor eax, fcn.007a4360
setne al
or al, 4
movzx eax, al
bt edx, eax
jae 0x81f205
jmp 0x81f2ca
xor ecx, fcn.007a4360
movzx ecx, byte [0xbb9f27]
setne al
or al, 4
movzx eax, al
bt ecx, eax
jb 0x81f2a5
mov eax, fcn.007a4360
mov edx, 3
xor ecx, ecx
mov edi, esi
sub edx, eax
mov eax, dword [0xbb9f18]
xor edx, fcn.007a4360
sete cl
xor ecx, 0xa4ca019
add ecx, 0xc0c
xor eax, ecx
mov dword [0xbb9f18], eax
not eax
mov edx, dword [0xbb9f1c]
imul eax, ecx
and cl, 7
lea esi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb9f1c], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
mov esi, edi
xor dword [0xbb9f20], edx
or byte [0xbb9f27], al
mov eax, fcn.007a4360
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, fcn.007a4360
setne cl
or cl, 4
xor cl, 7
rol al, cl
and byte [0xbb9f27], al
mov eax, dword [esp + 8]
mov edx, dword [ebp + esi*8 + 0x18]
mov ecx, dword [eax + 0x20]
cmp byte [edx + 0x24], 0
jns 0x81f2f7
mov eax, dword [ecx + 0x38]
and eax, 3
cmp eax, 2
jne 0x81f2f7
cmp byte [esp + 0xc], 0
mov edx, 0xbb9e90
jne 0x81f321
jmp 0x81fd3d
mov eax, dword [esp]
mov edx, 0xbb9eb0
test eax, 0x20000
jne 0x81f321
mov edx, str..X_A
test eax, 0x4000
jne 0x81f321
test al, 0x40
mov eax, 0xbb9f18
mov edx, 0xbb9f00
cmove edx, eax
mov eax, fcn.007d7740
mov dword [esp + 0x1c], ecx
xor ecx, ecx
mov dword [esp + 0x18], edx
and eax, 1
inc eax
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0xc]
xor edx, edx
mov ebp, dword [ecx*4 + 0xb57340]
mov edi, dword [ecx*4 + 0xb57350]
mov dword [esp + 4], ecx
xor eax, fcn.007d7740
mov eax, 1
sete dl
or edx, 0x20f3945e
add edx, 0x1200
xor edx, dword [ecx*4 + 0xb57360]
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 [ebp + edi - 1]
mov esi, dword [esp]
bt ecx, esi
jb 0x81f41b
mov dword [esp + 0x14], eax
mov al, byte [ebp + edi - 1]
mov ecx, eax
or cl, bl
lock cmpxchg byte [ebp + edi - 1], cl
jne 0x81f3a0
mov ecx, dword [esp + 0x14]
movzx eax, al
test ebx, eax
je 0x81f3c2
movzx eax, byte [ebp + edi - 1]
test ecx, eax
je 0x81f3b7
jmp 0x81f41b
mov dword [esp + 0x28], ebx
movzx eax, byte [ebp + edi - 1]
test ecx, eax
jne 0x81f411
lea ecx, [edi - 4]
shr ecx, 2
je 0x81f409
xor eax, eax
mov ebx, ebp
mov dword [esp + 0x10], ecx
mov esi, dword [ebx]
mov ecx, eax
mov dword [esp], edx
inc eax
shl dword [esp], cl
and cl, 0x1f
xor cl, 0x1f
xor esi, edx
shr edx, cl
mov ecx, dword [esp + 0x10]
or edx, dword [esp]
mov dword [ebx], esi
not esi
add ebx, 4
imul edx, esi
cmp eax, ecx
jne 0x81f3df
mov eax, dword [esp + 0x14]
or byte [ebp + edi - 1], al
mov eax, dword [esp + 0x28]
not al
and byte [ebp + edi - 1], al
mov ecx, dword [esp + 4]
inc ecx
cmp ecx, 4
jne 0x81f338
push 7
push 0xbb9f28
lea esi, [esp + 0x34]
push esi
call fcn.00782dd0
add esp, 0xc
mov eax, dword [esp + 0x1c]
push dword [eax]
push dword [esp + 0x1c]
push esi
call fcn.00783530
add esp, 0xc
mov edx, dword [esp + 8]
mov ecx, esi
call fcn.00827df0
jmp 0x81fd3d
test ecx, 0x100
je 0x81fb76
mov eax, ecx
and eax, 0xf
je 0x81fb76
mov edx, fcn.007bde20
mov esi, fcn.007bde20
xor eax, eax
movzx edi, byte [0xbb9f5b]
mov ebp, ebx
or edx, 2
xor esi, 2
mov ecx, edx
add ecx, esi
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edi, eax
jb 0x81f5b2
mov al, byte [0xbb9f5b]
mov edi, edx
xor ecx, ecx
mov ah, 1
add edi, esi
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 [0xbb9f5b], ah
jne 0x81f4b3
mov ecx, fcn.007bde20
mov edx, fcn.007bde20
xor ebx, ebx
movzx eax, al
or ecx, 2
xor edx, 2
mov esi, ecx
add esi, edx
sete bl
mov esi, ebx
not ebx
lea ebx, [ebx + esi*2]
and bl, 7
xor bl, 7
movzx esi, bl
bt eax, esi
jae 0x81f530
mov esi, ecx
xor eax, eax
add esi, edx
movzx esi, byte [0xbb9f5b]
sete al
mov ebx, eax
not ebx
lea eax, [ebx + eax*2]
and al, 7
movzx eax, al
bt esi, eax
jae 0x81f50a
jmp 0x81f5b2
xor eax, eax
add ecx, edx
movzx edx, byte [0xbb9f5b]
sete al
mov ecx, eax
not ecx
lea eax, [ecx + eax*2]
and al, 7
movzx eax, al
bt edx, eax
jb 0x81f584
mov eax, fcn.007bde20
mov ecx, fcn.007bde20
xor edx, edx
xor ecx, 2
or eax, 2
add eax, ecx
sete dl
mov eax, edx
xor eax, 0xbfc069d7
lea ecx, [eax + edx*2 + 0x50]
mov al, 1
xor dword [0xbb9f54], ecx
and cl, 7
shl al, cl
or byte [0xbb9f5b], al
mov eax, fcn.007bde20
mov ecx, fcn.007bde20
xor edx, edx
xor ecx, 2
or eax, 2
add eax, ecx
sete dl
mov eax, edx
not eax
lea ecx, [eax + edx*2]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb9f5b], al
mov edx, fcn.007aea20
mov eax, fcn.007aea20
movzx ecx, byte [0xbb9f63]
and edx, 1
xor edx, eax
cmp edx, 0xffffffff
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x81f6ab
mov al, byte [0xbb9f63]
cmp edx, 0xffffffff
mov ah, 1
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb9f63], ah
jne 0x81f5e1
mov ecx, fcn.007aea20
mov edx, fcn.007aea20
movzx eax, al
and ecx, 1
xor ecx, edx
cmp ecx, 0xffffffff
sete dl
or dl, 6
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x81f63c
cmp ecx, 0xffffffff
movzx edx, byte [0xbb9f63]
sete al
or al, 6
movzx eax, al
bt edx, eax
jae 0x81f623
jmp 0x81f6ab
cmp ecx, 0xffffffff
movzx edx, byte [0xbb9f63]
sete al
or al, 6
movzx eax, al
bt edx, eax
jb 0x81f686
mov edx, fcn.007aea20
mov eax, fcn.007aea20
xor ecx, ecx
and edx, 1
xor edx, eax
mov al, 1
cmp edx, 0xffffffff
sete cl
or ecx, 0x9dba8fe6
add ecx, 0x30
xor dword [0xbb9f5c], ecx
and cl, 7
shl al, cl
or byte [0xbb9f63], al
mov ecx, fcn.007aea20
mov eax, fcn.007aea20
and ecx, 1
xor ecx, eax
mov al, 0xfe
cmp ecx, 0xffffffff
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0xbb9f63], al
mov eax, dword [esp]
mov edi, 0xbb9f38
mov ebx, ebp
test al, 5
jne 0x81f6d4
cmp dword [esp + 0x10], 0x30
mov edi, 0xbb9f40
je 0x81f6d4
test al, 0x20
mov eax, 0xbb9f5c
mov edi, 0xbb9f54
cmove edi, eax
mov esi, 0x78b570
movzx ecx, byte [0xbb9f3f]
imul esi, esi
and esi, 3
cmp esi, 2
sete al
or al, 4
add al, 0x84
and al, 7
movzx eax, al
bt ecx, eax
jb 0x81f7de
mov al, byte [0xbb9f3f]
cmp esi, 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 [0xbb9f3f], ah
jne 0x81f703
mov ecx, 0x78b570
movzx esi, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete ah
or ah, 4
add ah, 0x84
and ah, 7
xor ah, 7
movzx eax, ah
bt esi, eax
jae 0x81f76a
cmp ecx, 2
movzx esi, byte [0xbb9f3f]
sete al
or al, 4
add al, 0x84
and al, 7
movzx eax, al
bt esi, eax
jae 0x81f74d
jmp 0x81f7de
cmp ecx, 2
movzx ecx, byte [0xbb9f3f]
sete al
or al, 4
add al, 0x84
and al, 7
movzx eax, al
bt ecx, eax
jb 0x81f7b7
mov eax, 0x78b570
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 1
sete cl
or ecx, 0x1777adb4
add ecx, 0x84
xor dword [0xbb9f38], ecx
and cl, 7
shl al, cl
or byte [0xbb9f3f], al
mov eax, 0x78b570
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 [0xbb9f3f], al
mov esi, fcn.00816aa0
xor eax, eax
movzx edx, byte [0xbb9f53]
imul esi, esi
and esi, 3
cmp esi, 2
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x81f94b
mov al, byte [0xbb9f53]
xor ecx, ecx
cmp esi, 2
mov ah, 1
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 [0xbb9f53], ah
jne 0x81f80e
mov ecx, fcn.00816aa0
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
mov ebx, edx
xor ebx, 3
lea edx, [ebx + edx*2]
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x81f87d
mov ebx, ebp
xor eax, eax
cmp ecx, 2
movzx esi, byte [0xbb9f53]
sete al
mov edx, eax
xor edx, 3
lea eax, [edx + eax*2]
bt esi, eax
jae 0x81f85c
jmp 0x81f94b
xor eax, eax
cmp ecx, 2
movzx edx, byte [0xbb9f53]
mov ebx, ebp
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x81f923
mov eax, fcn.00816aa0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 0xde83b90b
lea ecx, [eax + ecx*2 + 0x88]
mov eax, dword [0xbb9f40]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb9f40], eax
not eax
imul edx, eax
mov eax, dword [0xbb9f44]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb9f44], eax
or esi, edx
not eax
mov edx, dword [0xbb9f48]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb9f48], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
shl al, cl
xor dword [0xbb9f4c], edx
or byte [0xbb9f53], al
mov eax, fcn.00816aa0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 2
sete cl
mov eax, ecx
xor eax, 3
lea ecx, [eax + ecx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb9f53], al
mov eax, fcn.007acaf0
mov esi, 3
movzx ecx, byte [0xbb9f9b]
sub esi, eax
mov eax, esi
xor eax, fcn.007acaf0
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x81fb62
mov al, byte [0xbb9f9b]
mov ecx, esi
mov dl, 1
xor ecx, fcn.007acaf0
sete cl
not cl
and cl, 3
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb9f9b], dl
jne 0x81f97d
mov edx, fcn.007acaf0
mov ecx, 3
movzx eax, al
sub ecx, edx
mov edx, ecx
xor edx, fcn.007acaf0
sete dl
not dl
and dl, 3
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x81f9ec
mov eax, ecx
movzx edx, byte [0xbb9f9b]
xor eax, fcn.007acaf0
sete al
not al
and al, 3
movzx eax, al
bt edx, eax
jae 0x81f9ca
jmp 0x81fb62
xor ecx, fcn.007acaf0
movzx ecx, byte [0xbb9f9b]
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x81fb3b
mov eax, fcn.007acaf0
mov edx, 3
xor ecx, ecx
sub edx, eax
mov eax, dword [0xbb9f70]
xor edx, fcn.007acaf0
sete cl
xor ecx, 0x77b6b7d3
add ecx, 0x48
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb9f70], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbb9f74]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb9f74], eax
or esi, edx
not eax
mov edx, dword [0xbb9f78]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb9f78], edx
or esi, eax
not edx
mov eax, dword [0xbb9f7c]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbb9f7c], eax
or esi, edx
not eax
mov edx, dword [0xbb9f80]
imul eax, esi
mov esi, eax
shl esi, 4
xor edx, eax
shr eax, 0x1b
mov dword [0xbb9f80], edx
or eax, esi
not edx
imul edx, eax
mov eax, dword [0xbb9f84]
mov esi, edx
shl esi, 5
xor eax, edx
shr edx, 0x1a
mov dword [0xbb9f84], eax
or edx, esi
not eax
imul eax, edx
mov edx, dword [0xbb9f88]
mov esi, eax
shl esi, 6
xor edx, eax
shr eax, 0x19
mov dword [0xbb9f88], edx
or eax, esi
not edx
mov ebp, dword [0xbb9f8c]
imul edx, eax
mov esi, edx
shl esi, 7
xor ebp, edx
shr edx, 0x18
mov dword [0xbb9f8c], ebp
or edx, esi
not ebp
imul ebp, edx
mov edx, dword [0xbb9f90]
mov esi, ebp
shl esi, 8
xor edx, ebp
shr ebp, 0x17
mov dword [0xbb9f90], edx
or ebp, esi
not edx
imul edx, ebp
xor dword [0xbb9f94], edx
mov dl, 1
shl dl, cl
or byte [0xbb9f9b], dl
mov eax, fcn.007acaf0
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, fcn.007acaf0
sete cl
not cl
and cl, 3
xor cl, 7
rol al, cl
and byte [0xbb9f9b], al
push edi
push 0xbb9f70
push ebx
call fcn.00783530
add esp, 0xc
jmp 0x81fd3d
test ecx, 0x400
je 0x81fd3d
mov edx, 0x83fb90
movzx ecx, byte [0xbb9fbf]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x81fd25
mov al, byte [0xbb9fbf]
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 [0xbb9fbf], ah
jne 0x81fbaf
mov ecx, 0x83fb90
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 0x81fc0f
cmp ecx, 3
movzx edx, byte [0xbb9fbf]
sete al
not al
and al, 3
movzx eax, al
bt edx, eax
jae 0x81fbf1
jmp 0x81fd25
cmp ecx, 3
movzx ecx, byte [0xbb9fbf]
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x81fd02
mov eax, 0x83fb90
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov eax, dword [0xbb9fa0]
sete cl
xor ecx, 0xd8bc5a7b
add ecx, 8
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb9fa0], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbb9fa4]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbb9fa4], eax
or esi, edx
not eax
mov edx, dword [0xbb9fa8]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbb9fa8], edx
or esi, eax
not edx
mov eax, dword [0xbb9fac]
imul edx, esi
lea esi, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbb9fac], eax
or esi, edx
not eax
mov edx, dword [0xbb9fb0]
imul eax, esi
mov esi, eax
shl esi, 4
xor edx, eax
shr eax, 0x1b
mov dword [0xbb9fb0], edx
or eax, esi
not edx
mov edi, dword [0xbb9fb4]
imul edx, eax
mov esi, edx
shl esi, 5
xor edi, edx
shr edx, 0x1a
mov dword [0xbb9fb4], edi
or edx, esi
not edi
imul edi, edx
mov dl, 1
xor dword [0xbb9fb8], edi
shl dl, cl
or byte [0xbb9fbf], dl
mov eax, 0x83fb90
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 [0xbb9fbf], al
mov eax, dword [esp + 8]
push dword [eax + 0x20]
push dword [eax + 0x18]
push 0xbb9fa0
push ebx
call fcn.00783530
add esp, 0x10
lea ecx, [esp + 0x2c]
call fcn.007831c0
mov ebx, eax
mov eax, dword [esp + 0x24]
mov edi, dword [esp + 0x20]
mov esi, dword [eax + 0xd4]
mov ecx, edi
call fcn.007fdcb0
mov ecx, edi
mov edx, 0xae
push 0xfffffffffffffff9
push ebx
push 0
push esi
push eax
call fcn.007f75d0
add esp, 0x14
mov ecx, dword [esp + 0xa8]
xor ecx, esp
call fcn.00989fe9
add esp, 0xac
pop esi
pop edi
pop ebx
pop ebp
ret