Function at 0x7c8950
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x60
mov eax, dword [0xbcbae0]
mov edi, edx
movsx esi, byte [edi + 0xb47a30]
xor eax, ebp
mov dword [esp + 0x58], eax
test esi, esi
mov edx, dword [ecx]
jne 0x7c898a
cmp edx, dword [ecx + 0x4b8]
jb 0x7c898a
call fcn.007cbc30
xor edi, edi
jmp 0x7cb797
cmp edi, 0x144
mov dword [esp + 0x24], ecx
ja case.0x7c89a0.218
mov ecx, dword [ebp + 0x10]
mov eax, dword [ebp + 8]
jmp dword [edi*4 + 0xb50014]
mov byte [ecx + 0xc7], 1
jmp case.0x7c89a0.218
mov byte [ecx + 0xc7], 2
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
call fcn.007cbe40
jmp 0x7c9632
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 8]
call fcn.007cbff0
jmp 0x7c9632
mov dword [edx + 0x10], 7
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
movzx edx, word [edx - 0xa]
call fcn.007cc190
jmp 0x7c9632
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
xor edx, edx
push eax
call fcn.007cc450
jmp 0x7cb391
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
mov edx, 1
jmp 0x7c8a05
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
mov edx, 2
jmp 0x7c8a05
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
lea edx, [edx - 8]
push dword [esi - 0x14]
push 0
push 0
push dword [esi - 0x2c]
push eax
call fcn.007cc8a0
mov edx, esi
mov esi, ebx
add esp, 0x14
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
call fcn.007cdcd0
jmp 0x7c9632
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov dword [edx - 0x14], 1
jmp case.0x7c89a0.218
mov dword [edx + 4], 1
jmp case.0x7c89a0.218
movzx eax, byte [edx + 4]
mov dword [esp + 4], esi
mov esi, edx
lea ebx, [edx - 8]
lea edx, [edx - 0x14]
push 0
push eax
push ebx
call fcn.007cdd30
jmp 0x7cacc6
mov ebx, esi
mov esi, edx
xor edx, edx
push dword [esi + 4]
push 0
push 0
call fcn.007cdd30
add esp, 0xc
mov eax, dword [ebp + 0x10]
mov edx, dword [esi + 4]
mov ecx, dword [eax]
call fcn.007c0190
jmp 0x7c9632
mov ecx, dword [edx + 8]
mov eax, dword [edx + 4]
mov dword [esp + 8], edx
cmp ecx, 5
mov dword [esp + 0xc], eax
mov dword [esp + 0x10], ecx
jne 0x7c8c36
mov eax, 0x7a3b50
mov edx, 3
movzx ecx, byte [0xbaff93]
sub edx, eax
mov eax, edx
xor eax, 0x7a3b50
sete al
not al
and al, 5
movzx eax, al
bt ecx, eax
jb 0x7c8c0f
mov al, byte [0xbaff93]
mov ecx, edx
mov ah, 1
xor ecx, 0x7a3b50
sete cl
not cl
and cl, 5
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbaff93], ah
jne 0x7c8b16
mov edx, 0x7a3b50
mov ecx, 3
movzx eax, al
sub ecx, edx
mov edx, ecx
xor edx, 0x7a3b50
sete dl
not dl
and dl, 5
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7c8b85
mov eax, ecx
movzx edx, byte [0xbaff93]
xor eax, 0x7a3b50
sete al
not al
and al, 5
movzx eax, al
bt edx, eax
jae 0x7c8b63
jmp 0x7c8c0f
xor ecx, 0x7a3b50
movzx ecx, byte [0xbaff93]
sete al
not al
and al, 5
movzx eax, al
bt ecx, eax
jb 0x7c8be8
mov eax, 0x7a3b50
mov edx, 3
xor ecx, ecx
sub edx, eax
mov eax, dword [0xbaff88]
xor edx, 0x7a3b50
mov dl, 1
sete cl
xor ecx, 0x23388d3d
or ecx, 0x80
xor eax, ecx
mov dword [0xbaff88], eax
not eax
imul eax, ecx
and cl, 5
shl dl, cl
xor dword [0xbaff8c], eax
or byte [0xbaff93], dl
mov eax, 0x7a3b50
mov ecx, 3
sub ecx, eax
mov al, 0xfe
xor ecx, 0x7a3b50
sete cl
not cl
and cl, 5
xor cl, 7
rol al, cl
and byte [0xbaff93], al
push 5
push 0xbaff88
push dword [esp + 0x14]
call fcn.00777e50
add esp, 0xc
test eax, eax
jne 0x7c8c36
mov edx, dword [esp + 8]
mov dword [edx - 8], 0x280
jmp case.0x7c89a0.218
mov ebx, fcn.007989c0
xor eax, eax
mov dword [esp + 4], esi
not ebx
movzx edx, byte [0xbaffbf]
and ebx, 1
mov ecx, ebx
add ecx, fcn.007989c0
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7c8e33
mov al, byte [0xbaffbf]
mov edx, ebx
xor ecx, ecx
add edx, fcn.007989c0
sete cl
mov edx, ecx
xor edx, 1
lea ecx, [ecx + edx*2 + 6]
mov dl, 1
and cl, 7
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbaffbf], dl
jne 0x7c8c74
mov ecx, fcn.007989c0
xor edx, edx
movzx eax, al
not ecx
and ecx, 1
mov ebx, ecx
add ebx, fcn.007989c0
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 0x7c8cfd
mov edx, ecx
xor eax, eax
movzx esi, byte [0xbaffbf]
add edx, fcn.007989c0
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 6]
and al, 7
movzx eax, al
bt esi, eax
jae 0x7c8cd1
jmp 0x7c8e33
xor eax, eax
add ecx, fcn.007989c0
movzx edx, byte [0xbaffbf]
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edx, eax
jb 0x7c8e06
mov ecx, fcn.007989c0
xor eax, eax
not ecx
and ecx, 1
add ecx, fcn.007989c0
sete al
mov ecx, eax
not ecx
and ecx, 0x641
lea ecx, [eax + ecx*2 + 0x580d6816]
mov eax, dword [0xbaffa0]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbaffa0], eax
not eax
imul edx, eax
mov eax, dword [0xbaffa4]
lea ebx, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbaffa4], eax
or edx, ebx
not eax
imul eax, edx
mov edx, dword [0xbaffa8]
lea ebx, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbaffa8], edx
or eax, ebx
not edx
imul edx, eax
mov eax, dword [0xbaffac]
lea ebx, [edx*8]
xor eax, edx
shr edx, 0x1c
mov dword [0xbaffac], eax
or edx, ebx
not eax
imul eax, edx
mov edx, dword [0xbaffb0]
mov ebx, eax
shl ebx, 4
xor edx, eax
shr eax, 0x1b
mov dword [0xbaffb0], edx
or eax, ebx
not edx
mov esi, dword [0xbaffb4]
imul edx, eax
mov ebx, edx
shl ebx, 5
xor esi, edx
shr edx, 0x1a
mov dword [0xbaffb4], esi
or edx, ebx
not esi
imul esi, edx
mov dl, 1
xor dword [str.Sbc7TR], esi
shl dl, cl
or byte [0xbaffbf], dl
mov eax, fcn.007989c0
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.007989c0
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 [0xbaffbf], al
mov esi, dword [esp + 8]
mov dword [esi - 8], 0
push dword [esp + 0xc]
push dword [esp + 0x14]
push 0xbaffa0
push dword [ebp + 0x10]
call fcn.00782570
mov edx, esi
add esp, 0x10
mov esi, dword [esp + 4]
jmp case.0x7c89a0.218
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
lea edx, [edx - 8]
push eax
call fcn.007cf360
jmp 0x7cb391
mov dword [edx + 0x14], 0
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov eax, dword [edx + 4]
add eax, dword [edx + 8]
sub eax, dword [edx - 0x20]
mov dword [edx - 0x1c], eax
jmp case.0x7c89a0.218
mov eax, dword [edx + 4]
add eax, dword [edx + 8]
sub eax, dword [edx - 0x38]
mov dword [edx - 0x34], eax
jmp case.0x7c89a0.218
mov eax, dword [edx + 4]
add eax, dword [edx + 8]
sub eax, dword [edx - 8]
mov dword [edx - 4], eax
jmp case.0x7c89a0.218
mov dword [edx + 0x10], eax
jmp case.0x7c89a0.218
mov ecx, dword [ebp + 0xc]
mov dword [edx + 0x10], eax
mov dword [edx + 0x14], ecx
jmp case.0x7c89a0.218
mov ebx, ecx
mov eax, dword [edx + 4]
mov ecx, dword [edx + 8]
mov dword [ebx + 0x4c], ecx
mov dword [ebx + 0x48], eax
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
mov esi, edx
mov eax, dword [edx - 8]
mov edx, dword [edx + 4]
mov ebx, dword [esi - 4]
add ebx, eax
push ebx
push eax
call fcn.007cf8f0
jmp 0x7cb42f
mov eax, dword [edx - 0x14]
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 8]
inc eax
push dword [esi + 4]
push eax
call fcn.007cf8f0
jmp 0x7ca567
mov eax, dword [edx - 8]
mov ebx, esi
mov esi, edx
add eax, dword [edx - 4]
mov edx, dword [edx + 4]
push eax
push dword [esi - 0x14]
call fcn.007cf8f0
jmp 0x7ca567
mov dword [esp + 4], esi
mov esi, edx
mov edx, 0xaa
push 0
push dword [esi + 4]
call fcn.007cff00
add esp, 8
mov ebx, dword [esi - 8]
mov ecx, dword [ebp + 0x10]
mov edx, eax
add ebx, dword [esi - 4]
push ebx
push dword [esi - 0x14]
call fcn.007cf8f0
jmp 0x7cb42f
mov eax, edx
mov edx, 0x73
mov dword [esp + 4], esi
push dword [eax + 8]
mov esi, eax
push dword [eax + 4]
call fcn.007cffc0
add esp, 8
mov edx, eax
test eax, eax
je 0x7c8f93
mov ecx, edx
mov ebx, edx
call fcn.007d00b0
mov edx, ebx
mov eax, dword [esi + 4]
mov ebx, dword [esi + 8]
mov ecx, dword [ebp + 0x10]
add ebx, eax
push ebx
push eax
call fcn.007cf8f0
mov edx, esi
add esp, 8
mov esi, dword [esp + 4]
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
call fcn.007d00f0
jmp 0x7c9632
mov ebx, esi
mov esi, edx
xor edx, edx
push dword [esi - 0x14]
push dword [esi + 4]
push dword [esi - 8]
call fcn.007d0140
mov edx, esi
mov esi, ebx
add esp, 0xc
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
xor edx, edx
push 1
push 0
push 0
push 0
push 0
push dword [esi + 4]
push 0
push 0
push 0
call fcn.007d0860
mov edx, esi
mov esi, ebx
add esp, 0x24
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 8]
call fcn.007d3ba0
jmp 0x7c9632
mov ebx, esi
mov esi, edx
lea eax, [edx - 0x14]
xor edx, edx
push dword [esi + 4]
push dword [esi - 8]
push eax
call fcn.007d3c20
jmp 0x7c8fd8
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
call fcn.007d44e0
jmp 0x7c9632
mov ebx, esi
mov esi, edx
lea edx, [edx + 4]
call fcn.007d4500
jmp 0x7c9632
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 8]
push 0
call fcn.007d45a0
jmp 0x7cb391
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
mov edx, dword [edx - 0x14]
push eax
call fcn.007d45a0
jmp 0x7cb391
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov eax, dword [edx + 8]
not eax
and eax, dword [edx - 8]
or eax, dword [edx + 4]
mov dword [edx - 8], eax
jmp case.0x7c89a0.218
mov dword [edx - 8], 0
mov dword [edx - 4], 0
jmp case.0x7c89a0.218
mov dword [edx - 0x14], 0
mov dword [edx - 0x10], 0
jmp case.0x7c89a0.218
mov eax, dword [edx + 4]
mov dword [edx - 0x14], eax
mov dword [edx - 0x10], 0xff
jmp case.0x7c89a0.218
mov eax, dword [edx + 4]
shl eax, 8
mov dword [edx - 0x14], eax
mov dword [edx - 0x10], 0xff00
jmp case.0x7c89a0.218
mov dword [edx - 8], 8
jmp case.0x7c89a0.218
mov dword [edx - 8], 9
jmp case.0x7c89a0.218
mov dword [edx + 4], 0xa
jmp case.0x7c89a0.218
mov dword [edx + 4], 7
jmp case.0x7c89a0.218
mov dword [edx - 8], 0
jmp case.0x7c89a0.218
mov dword [edx - 0x14], 0
jmp case.0x7c89a0.218
mov dword [edx - 8], 1
jmp case.0x7c89a0.218
mov dword [edx - 8], 0
jmp case.0x7c89a0.218
mov dword [ecx + 0x4c], 0
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x20]
push 0
push dword [esi - 0x14]
push dword [esi + 4]
jmp 0x7c8fd3
mov ebx, esi
mov esi, edx
xor edx, edx
push 1
push 0
push 0
push 0
push 0
push dword [esi + 4]
push dword [esi - 0x14]
jmp 0x7c8ff9
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x14]
call fcn.007d3ba0
jmp 0x7c9632
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x44]
lea eax, [esi - 0x20]
push dword [esi - 8]
push dword [esi - 0x14]
push eax
call fcn.007d3c20
add esp, 0xc
mov edx, dword [esi + 4]
mov ecx, dword [ebp + 0x10]
call fcn.007d44e0
jmp 0x7c9632
mov dword [edx + 0x10], 0xb
jmp case.0x7c89a0.218
mov dword [edx + 4], 4
jmp case.0x7c89a0.218
mov dword [edx + 4], 5
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
push dword [esi - 8]
push 0
call fcn.007d4d70
jmp 0x7ca567
mov dword [esp + 4], esi
lea eax, [edx - 0x20]
lea ebx, [edx - 0x2c]
mov esi, edx
lea edx, [edx - 0x5c]
push dword [esi - 0x38]
push dword [esi - 0x50]
push dword [esi + 4]
push dword [esi - 0x14]
push eax
push ebx
call fcn.007d5a00
mov edx, esi
mov esi, dword [esp + 0x1c]
add esp, 0x18
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
push dword [esi - 8]
push 1
call fcn.007d4d70
jmp 0x7ca567
mov eax, dword [0xb47bc8]
mov ebx, esi
mov esi, edx
mov dword [esp + 0x54], eax
mov eax, dword [0xb47bc4]
mov dword [esp + 0x50], eax
mov eax, dword [0xb47bc0]
mov dword [esp + 0x4c], eax
mov eax, dword [0xb47bbc]
mov dword [esp + 0x48], eax
mov eax, dword [0xb47bb8]
mov dword [esp + 0x44], eax
mov eax, dword [0xb47bb4]
mov dword [esp + 0x40], eax
lea eax, [esp + 0x40]
mov edx, dword [edx + 4]
push eax
call fcn.007d5f00
add esp, 4
jmp 0x7c8ab7
mov ebx, edx
mov dword [esp + 4], esi
mov edx, dword [edx - 8]
mov esi, dword [ebx + 4]
test esi, esi
je 0x7c92ac
mov dword [esi + 0x40], edx
mov edx, esi
call fcn.007d8160
jmp 0x7c92b3
mov ecx, dword [ecx]
call fcn.007c03e0
mov dword [ebx - 0x14], esi
mov esi, dword [esp + 4]
mov edx, ebx
jmp case.0x7c89a0.218
mov ebx, edx
mov dword [esp + 4], esi
mov edx, dword [edx - 8]
mov esi, dword [ebx + 4]
test esi, esi
je 0x7c92e0
mov dword [esi + 0x40], edx
mov edx, esi
call fcn.007d8160
mov dword [ebx - 0x20], esi
jmp 0x7c92b6
mov ecx, dword [ecx]
call fcn.007c03e0
mov dword [ebx - 0x20], esi
jmp 0x7c92b6
mov ebx, dword [edx + 4]
test ebx, ebx
je 0x7c9306
mov dword [esp + 4], esi
mov esi, edx
mov edx, ebx
call fcn.007d8160
mov edx, esi
mov esi, dword [esp + 4]
mov dword [edx + 4], ebx
jmp case.0x7c89a0.218
mov ebx, dword [edx + 4]
mov eax, dword [edx - 0x14]
test ebx, ebx
je 0x7c93b3
cmp dword [ebx + 0x34], 0
mov dword [esp + 8], eax
je 0x7c9386
mov ecx, dword [ebp + 0x10]
mov dword [esp + 4], esi
mov esi, edx
mov edx, ebx
mov dword [esp + 0x3c], 0
call fcn.007d8160
mov ecx, dword [ebp + 0x10]
lea eax, [esp + 0x38]
xor edx, edx
push 0
push 0
push ebx
push eax
push 0
push 0
call fcn.007d83c0
add esp, 0x18
mov ecx, dword [ebp + 0x10]
xor edx, edx
push 0
push 0
push 0
push 0
push 0
push 0
push eax
call fcn.007d8990
mov edx, esi
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0x20]
add esp, 0x1c
mov ebx, eax
mov eax, dword [esp + 8]
test ebx, ebx
je 0x7c93b3
mov al, byte [edx - 8]
mov byte [ebx], al
mov eax, dword [esp + 8]
test eax, eax
mov dword [ebx + 0x34], eax
je 0x7c939a
and byte [eax + 5], 0xfb
and byte [ebx + 5], 0xfb
cmp dword [edx - 8], 0x85
je 0x7c93c6
mov byte [ecx + 0x16], 1
mov dword [edx - 0x14], ebx
jmp case.0x7c89a0.218
mov ecx, dword [ecx]
mov ebx, esi
mov esi, edx
mov edx, eax
call fcn.007c0190
mov edx, esi
mov esi, ebx
xor ebx, ebx
mov dword [edx - 0x14], ebx
jmp case.0x7c89a0.218
movzx eax, word [edx + 2]
mov dword [edx + 4], eax
jmp case.0x7c89a0.218
mov dword [edx - 8], 0x85
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x44]
push dword [esi + 4]
push dword [esi - 0x50]
push dword [esi - 8]
push dword [esi - 0x14]
push dword [esi - 0x20]
push dword [esi - 0x2c]
push dword [esi - 0x38]
call fcn.007d8990
mov edx, esi
mov esi, ebx
add esp, 0x1c
mov dword [edx - 0x5c], eax
jmp case.0x7c89a0.218
mov ebx, edx
mov edx, dword [edx - 0x50]
push dword [ebx + 4]
push dword [ebx - 0x5c]
push dword [ebx - 8]
push dword [ebx - 0x20]
push dword [ebx - 0x2c]
push dword [ebx - 0x38]
push dword [ebx - 0x44]
call fcn.007d8990
add esp, 0x1c
mov dword [ebx - 0x68], eax
test eax, eax
mov dword [esp + 8], ebx
mov edx, dword [ebx - 0x14]
je 0x7c9452
mov dword [eax + 0x48], edx
mov edx, dword [esp + 8]
jmp case.0x7c89a0.218
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
call fcn.007c03c0
mov edx, dword [esp + 8]
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 8]
push 0
push 0x200
push 0
push 0
push 0
push 0
push 0
call fcn.007d8990
mov edx, esi
mov esi, ebx
add esp, 0x1c
mov dword [edx - 0x20], eax
jmp case.0x7c89a0.218
mov ebx, dword [edx - 0x2c]
mov dword [esp + 8], edx
mov edx, dword [edx - 8]
mov dword [esp + 4], esi
push 0
push 0x600
push 0
push 0
push 0
push 0
push 0
call fcn.007d8990
add esp, 0x1c
test ebx, ebx
je 0x7c94c0
and byte [ebx + 5], 0xfb
test eax, eax
je 0x7c94cc
mov byte [eax], 0x85
mov dword [eax + 0x34], ebx
mov ebx, eax
mov edx, dword [esp + 8]
mov esi, dword [esp + 4]
mov dword [edx - 0x2c], ebx
jmp case.0x7c89a0.218
mov dword [edx + 4], 1
jmp case.0x7c89a0.218
mov dword [edx + 4], 2
jmp case.0x7c89a0.218
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov ebx, edx
mov edx, dword [edx - 0x2c]
mov dword [esp + 4], esi
mov esi, ecx
push dword [ebx - 0x14]
call fcn.007d8ad0
add esp, 4
mov dword [ebx - 0x2c], eax
mov edx, eax
cmp dword [ebx + 8], 0
je 0x7c9534
lea eax, [ebx + 4]
mov ecx, esi
push 1
push eax
call fcn.007d8b80
add esp, 8
mov edx, dword [ebx - 0x2c]
mov ecx, esi
push dword [ebx - 8]
push dword [ebx - 0x20]
call fcn.007d8be0
add esp, 8
jmp 0x7c92b6
mov ecx, dword [ecx]
mov ebx, esi
mov esi, edx
mov edx, 0xb1
push 0
call fcn.007d8c20
add esp, 4
mov edx, dword [esi - 0x14]
mov ecx, dword [ebp + 0x10]
push eax
call fcn.007d8ad0
jmp 0x7ca3ad
mov dword [esp + 4], esi
mov esi, edx
mov edx, 0xb1
push 0
push 0
call fcn.007cff00
add esp, 8
mov ecx, dword [ebp + 0x10]
mov ebx, eax
lea eax, [esi - 0x14]
mov edx, 0x3b
mov ecx, dword [ecx]
push 1
push eax
call fcn.007d8c70
add esp, 8
mov ecx, dword [ebp + 0x10]
mov edx, 0x8b
push ebx
push eax
call fcn.007cff00
add esp, 8
mov edx, dword [esi - 0x2c]
mov ecx, dword [ebp + 0x10]
push eax
call fcn.007d8ad0
mov edx, esi
mov esi, dword [esp + 8]
add esp, 4
jmp 0x7cb760
mov eax, dword [edx + 4]
mov ecx, dword [edx + 8]
mov dword [edx - 4], ecx
mov dword [edx - 8], eax
jmp case.0x7c89a0.218
mov ecx, dword [ecx]
mov ebx, esi
mov esi, edx
mov edx, 0x50
push 0
call fcn.0077efb0
mov edx, esi
mov esi, ebx
add esp, 4
mov dword [edx + 0x10], eax
jmp case.0x7c89a0.218
mov ecx, dword [edx + 4]
mov ebx, esi
mov esi, edx
mov dword [edx - 8], ecx
call fcn.007d8dc0
jmp 0x7c9632
mov eax, dword [edx - 8]
test eax, eax
je case.0x7c89a0.218
mov ecx, dword [eax]
test ecx, ecx
jle case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov dl, byte [edx + 4]
lea ecx, [ecx + ecx*8]
mov byte [eax + ecx*8 - 0x1c], dl
mov edx, esi
mov esi, ebx
jmp case.0x7c89a0.218
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
mov esi, edx
mov edx, dword [edx - 0x44]
lea eax, [esi - 0x20]
lea ebx, [esi - 0x2c]
mov dword [esp + 0xc], eax
lea eax, [esi - 0x38]
mov dword [esp + 8], eax
push dword [esi + 4]
push dword [esi - 8]
push 0
push dword [esp + 0x18]
push ebx
push dword [esp + 0x1c]
call fcn.007d83c0
add esp, 0x18
mov ecx, dword [ebp + 0x10]
lea ebx, [esi - 0x14]
mov edx, eax
mov dword [esi - 0x44], eax
push ebx
call fcn.007d8df0
mov edx, esi
jmp 0x7cabfb
mov dword [esp + 4], esi
mov esi, edx
mov edx, dword [edx - 0x5c]
lea eax, [esi - 0x14]
lea ebx, [esi - 0x44]
mov dword [esp + 0xc], eax
lea eax, [esi - 0x50]
mov dword [esp + 8], eax
push dword [esi + 4]
push dword [esi - 8]
push 0
push dword [esp + 0x18]
push ebx
push dword [esp + 0x1c]
call fcn.007d83c0
add esp, 0x18
mov ecx, dword [ebp + 0x10]
mov edx, eax
mov dword [esi - 0x5c], eax
push dword [esi - 0x2c]
call fcn.007d8e30
mov edx, esi
jmp 0x7cabfb
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x44]
lea eax, [esi - 0x14]
push dword [esi + 4]
push dword [esi - 8]
push dword [esi - 0x2c]
push eax
push 0
push 0
call fcn.007d83c0
mov edx, esi
mov esi, ebx
add esp, 0x18
mov dword [edx - 0x44], eax
jmp case.0x7c89a0.218
mov ebx, edx
mov edx, dword [edx - 0x44]
mov dword [esp + 4], esi
test edx, edx
jne 0x7c9732
cmp dword [ebx - 0x10], 0
jne 0x7c9732
cmp dword [ebx - 8], 0
jne 0x7c9732
cmp dword [ebx + 4], 0
jne 0x7c9732
mov eax, dword [ebx - 0x2c]
mov dword [ebx - 0x44], eax
jmp 0x7c92b6
mov ecx, dword [ebx - 0x2c]
cmp dword [ecx], 1
jne 0x7c97c6
mov ecx, dword [ebp + 0x10]
lea eax, [ebx - 0x14]
push dword [ebx + 4]
push dword [ebx - 8]
push 0
push eax
push 0
push 0
call fcn.007d83c0
add esp, 0x18
test eax, eax
mov esi, ebx
mov dword [ebx - 0x44], eax
je 0x7c97b4
mov ecx, esi
mov ecx, dword [esi - 0x2c]
mov edx, dword [eax]
mov ebx, dword [ecx + 0x10]
dec edx
lea edx, [edx + edx*8]
mov dword [eax + edx*8 + 0x10], ebx
mov ebx, dword [ecx + 0xc]
mov dword [eax + edx*8 + 0xc], ebx
mov ebx, dword [ecx + 0x1c]
mov dword [eax + edx*8 + 0x1c], ebx
test byte [ecx + 0x30], 4
je 0x7c979f
mov ebx, dword [ecx + 0x48]
mov dword [eax + edx*8 + 0x48], ebx
mov dword [ecx + 0x48], 0
and byte [ecx + 0x30], 0xfb
or byte [eax + edx*8 + 0x30], 4
mov dword [ecx + 0xc], 0
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x1c], 0
mov eax, dword [ebp + 0x10]
mov edx, dword [esi - 0x2c]
mov ecx, dword [eax]
call fcn.007c0320
jmp 0x7ca393
call fcn.007d8dc0
mov eax, dword [ebp + 0x10]
xor edx, edx
mov ecx, eax
push 0
push 0x800
push 0
push 0
push 0
push 0
push dword [ebx - 0x2c]
call fcn.007d8990
add esp, 0x1c
mov edx, dword [ebx - 0x44]
mov ecx, dword [ebp + 0x10]
lea esi, [ebx - 0x14]
push dword [ebx + 4]
push dword [ebx - 8]
push eax
push esi
push 0
push 0
call fcn.007d83c0
add esp, 0x18
mov dword [ebx - 0x44], eax
jmp 0x7c92b6
mov dword [edx + 0x10], 0
mov dword [edx + 0x14], 0
jmp case.0x7c89a0.218
mov ebx, ecx
mov dword [esp + 4], esi
mov dword [esp + 8], edx
lea eax, [edx + 4]
xor edx, edx
push 0
mov dword [esp + 0x10], eax
push eax
call fcn.007d8e50
mov ecx, ebx
add esp, 8
mov ebx, eax
test eax, eax
je 0x7c9862
cmp byte [ecx + 0xc8], 2
jb 0x7c9862
mov edx, dword [ebx + 0x10]
push dword [esp + 0xc]
call fcn.007d8f10
add esp, 4
mov eax, dword [esp + 0xc]
mov dword [eax], ebx
jmp 0x7c9ee5
mov ecx, dword [ebp + 0x10]
lea ebx, [edx + 4]
mov dword [esp + 4], esi
mov dword [esp + 8], edx
lea eax, [edx - 0x14]
xor edx, edx
mov dword [esp + 0x10], ebx
push ebx
mov dword [esp + 0x10], eax
push eax
call fcn.007d8e50
mov ecx, dword [ebp + 0x10]
add esp, 8
mov ebx, eax
test eax, eax
je 0x7c9862
cmp byte [ecx + 0xc8], 2
jb 0x7c9862
mov edx, dword [ebx + 0x10]
push dword [esp + 0x10]
jmp 0x7c985a
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
xor edx, edx
push 0
push eax
call fcn.007d8e50
jmp 0x7c9e48
lea ebx, [edx - 0x14]
lea eax, [edx + 4]
mov dword [esp + 8], ebx
mov ebx, esi
mov esi, edx
xor edx, edx
push eax
push dword [esp + 0xc]
call fcn.007d8e50
jmp 0x7ca530
lea ecx, [edx - 0x2c]
lea eax, [edx - 0x14]
mov ebx, edx
xor edx, edx
mov dword [esp + 4], esi
mov dword [esp + 8], ecx
mov ecx, dword [ebp + 0x10]
push eax
push dword [esp + 0xc]
call fcn.007d8e50
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0xc]
mov edx, ebx
add esp, 8
test eax, eax
mov dword [ebx - 0x2c], eax
je case.0x7c89a0.218
mov ecx, dword [ecx]
lea edx, [ebx + 4]
call fcn.007d8f60
mov ecx, dword [ebx - 0x2c]
mov esi, dword [esp + 4]
mov edx, ebx
mov dword [ecx + 0x14], eax
jmp case.0x7c89a0.218
mov ecx, dword [ebp + 0x10]
lea eax, [edx - 0x14]
mov ebx, edx
xor edx, edx
mov dword [esp + 4], esi
push 0
push eax
call fcn.007d8e50
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0xc]
mov edx, ebx
add esp, 8
test eax, eax
mov dword [ebx - 0x14], eax
je case.0x7c89a0.218
mov ecx, dword [ecx]
lea edx, [ebx + 4]
call fcn.007d8f60
mov ecx, dword [ebx - 0x14]
mov esi, dword [esp + 4]
mov edx, ebx
mov dword [ecx + 0x14], eax
jmp case.0x7c89a0.218
mov dword [edx + 4], 1
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
lea edx, [edx - 8]
push 0
push 0
call fcn.007d8f90
jmp 0x7ca5a9
mov ebx, esi
lea eax, [edx - 8]
mov esi, edx
lea edx, [edx - 0x14]
push 0
push eax
call fcn.007d8f90
jmp 0x7ca530
mov dword [esp + 4], esi
lea eax, [edx - 8]
lea ebx, [edx - 0x14]
mov esi, edx
lea edx, [edx - 0x20]
push eax
push ebx
call fcn.007d8f90
mov edx, esi
mov esi, dword [esp + 0xc]
jmp 0x7c9aeb
mov eax, dword [edx + 4]
mov dword [edx - 8], eax
jmp case.0x7c89a0.218
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov eax, dword [edx + 4]
mov ecx, dword [edx + 8]
mov dword [edx - 0x10], ecx
mov dword [edx - 0x14], eax
jmp case.0x7c89a0.218
mov dword [edx - 8], 0
mov dword [edx - 4], 1
jmp case.0x7c89a0.218
mov eax, dword [edx - 8]
mov dword [edx - 0x20], eax
jmp case.0x7c89a0.218
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov eax, dword [edx + 4]
mov dword [edx - 0x14], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x2c]
push dword [esi - 0x14]
call fcn.007d8ad0
add esp, 4
mov dword [esi - 0x2c], eax
jmp 0x7c9a5c
mov ebx, esi
mov esi, edx
xor edx, edx
push dword [esi - 0x14]
call fcn.007d8ad0
add esp, 4
mov dword [esi - 0x14], eax
mov edx, dword [esi - 8]
mov ecx, eax
push dword [esi + 4]
call fcn.007d98e0
jmp 0x7cb391
mov dword [edx + 4], 0
jmp case.0x7c89a0.218
mov dword [edx + 4], 1
jmp case.0x7c89a0.218
mov dword [edx + 0x10], 0xffffffff
jmp case.0x7c89a0.218
mov dword [edx - 8], 0
jmp case.0x7c89a0.218
mov dword [edx - 8], 1
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, 0x92
push 0
push dword [esi + 4]
jmp 0x7ca5a4
mov ebx, esi
mov esi, edx
mov edx, 0x92
push dword [esi + 4]
push dword [esi - 0x14]
call fcn.007cff00
jmp 0x7c9ae7
mov ebx, esi
mov esi, edx
mov edx, 0x92
push dword [esi - 0x14]
push dword [esi + 4]
call fcn.007cff00
mov edx, esi
mov esi, ebx
add esp, 8
mov dword [edx - 0x20], eax
jmp case.0x7c89a0.218
mov ebx, esi
lea eax, [edx - 8]
mov esi, edx
mov edx, dword [edx - 0x14]
push eax
call fcn.007d8df0
add esp, 4
mov edx, dword [esi - 0x14]
mov ecx, dword [ebp + 0x10]
push dword [esi + 4]
call fcn.007d9920
jmp 0x7cb391
mov dword [esp + 8], edx
mov edx, fcn.0079b650
xor eax, eax
mov dword [esp + 4], esi
imul edx, edx
movzx esi, byte [0xbaffcf]
and edx, 3
cmp edx, 3
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2]
and al, 3
movzx eax, al
bt esi, eax
jb 0x7c9c83
mov al, byte [0xbaffcf]
xor ecx, ecx
cmp edx, 3
mov ah, 1
sete cl
mov ebx, ecx
not ebx
lea ecx, [ecx + ebx*2]
and cl, 3
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbaffcf], ah
jne 0x7c9b58
mov ecx, fcn.0079b650
xor edx, edx
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
mov ebx, edx
not ebx
lea edx, [edx + ebx*2]
and dl, 3
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7c9bcd
xor eax, eax
cmp ecx, 3
movzx esi, byte [0xbaffcf]
sete al
mov edx, eax
not edx
lea eax, [eax + edx*2]
and al, 3
movzx eax, al
bt esi, eax
jae 0x7c9ba8
jmp 0x7c9c83
xor eax, eax
cmp ecx, 3
movzx edx, byte [0xbaffcf]
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2]
and al, 3
movzx eax, al
bt edx, eax
jb 0x7c9c59
mov ecx, fcn.0079b650
xor eax, eax
mov ebx, dword [0xbaffc0]
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete al
mov ecx, eax
not ecx
and ecx, 0x425
lea ecx, [eax + ecx*2 - 0x15ad7c30]
xor ebx, ecx
mov edx, ecx
mov dword [0xbaffc0], ebx
shr edx, 0x1f
not ebx
mov esi, dword [0xbaffc4]
or edx, ecx
and cl, 7
imul edx, ebx
lea ebx, [edx + edx]
xor esi, edx
shr edx, 0x1e
mov dword [0xbaffc4], esi
or ebx, edx
not esi
mov dl, 1
imul esi, ebx
shl dl, cl
xor dword [0xbaffc8], esi
or byte [0xbaffcf], dl
mov eax, fcn.0079b650
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
sete cl
mov eax, ecx
not eax
lea ecx, [ecx + eax*2]
mov al, 0xfe
and cl, 3
xor cl, 7
rol al, cl
and byte [0xbaffcf], al
mov esi, dword [esp + 8]
mov ebx, dword [ebp + 0x10]
mov edx, dword [esi - 0x2c]
lea eax, [esi - 0x20]
mov ecx, ebx
push eax
call fcn.007d8df0
add esp, 4
mov edx, dword [esi - 8]
mov ecx, ebx
push 0xbaffc0
call fcn.007da420
add esp, 4
mov edx, dword [esi - 0x2c]
mov ecx, ebx
push 0
push dword [esi - 0x38]
push dword [esi + 4]
push dword [esi - 8]
call fcn.007da610
mov edx, esi
add esp, 0x10
mov esi, dword [esp + 4]
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
mov esi, edx
mov edx, dword [edx - 0x2c]
push dword [esi + 4]
call fcn.007d8ad0
add esp, 4
mov ecx, dword [ebp + 0x10]
mov dword [esi - 0x2c], eax
lea ebx, [esi - 0x14]
mov edx, eax
push 1
push ebx
call fcn.007d8b80
jmp 0x7cb42f
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x44]
push dword [esi + 4]
push dword [esi - 0x20]
call fcn.007dc0b0
mov edx, esi
mov esi, ebx
add esp, 8
mov dword [edx - 0x44], eax
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
mov esi, edx
xor edx, edx
push dword [esi + 4]
call fcn.007d8ad0
add esp, 4
mov ecx, dword [ebp + 0x10]
mov ebx, eax
lea eax, [esi - 0x14]
mov edx, ebx
push 1
push eax
call fcn.007d8b80
mov edx, esi
mov esi, dword [esp + 0xc]
add esp, 8
mov dword [edx - 0x14], ebx
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
xor edx, edx
push dword [esi + 4]
push dword [esi - 0x20]
call fcn.007dc0b0
mov edx, esi
mov esi, ebx
add esp, 8
jmp 0x7cb760
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x20]
push dword [esi + 4]
push dword [esi - 0x38]
push dword [esi - 0x14]
push dword [esi - 8]
call fcn.007dc3b0
mov edx, esi
mov esi, ebx
add esp, 0x10
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x20]
push 0
push dword [esi - 0x38]
push dword [esi - 0x14]
push 0
jmp 0x7c9d83
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x50]
mov ecx, dword [ecx]
push dword [esi + 4]
push dword [esi - 8]
push dword [esi - 0x38]
call fcn.007de350
mov edx, esi
mov esi, ebx
add esp, 0xc
mov dword [edx - 0x74], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x2c]
mov ecx, dword [ecx]
push 0
push 0
push dword [esi - 0x14]
call fcn.007de350
jmp 0x7cb4de
mov ecx, dword [ecx]
mov ebx, esi
mov esi, edx
xor edx, edx
push 0
push 0
push 0
call fcn.007de350
jmp 0x7cb599
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
mov edx, dword [edx - 0x14]
push eax
call fcn.007de3c0
jmp 0x7ca3ad
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
xor edx, edx
push eax
call fcn.007de3c0
jmp 0x7cab45
mov ebx, esi
mov esi, edx
mov edx, 0x3b
push dword [esi + 8]
push dword [esi + 4]
call fcn.007cffc0
mov edx, esi
mov esi, ebx
add esp, 8
mov dword [edx + 4], eax
jmp case.0x7c89a0.218
mov eax, dword [ebp + 0x10]
lea ebx, [edx - 0x14]
mov dword [esp + 4], esi
mov esi, edx
mov edx, 0x3b
mov ecx, dword [eax]
push 1
mov dword [esp + 0x10], ebx
push ebx
call fcn.007d8c70
add esp, 8
mov dword [esp + 0x10], eax
mov eax, dword [ebp + 0x10]
lea ebx, [esi + 4]
mov dword [esp + 8], esi
mov edx, 0x3b
mov ecx, dword [eax]
push 1
push ebx
call fcn.007d8c70
mov ecx, dword [ebp + 0x10]
add esp, 8
cmp byte [ecx + 0xc8], 2
jb 0x7c9ecd
mov ecx, dword [ebp + 0x10]
mov edx, eax
push ebx
mov ebx, eax
call fcn.007d8f10
add esp, 4
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0x10]
push dword [esp + 0xc]
call fcn.007d8f10
mov ecx, dword [ebp + 0x10]
mov eax, ebx
add esp, 4
mov edx, 0x8b
push eax
push dword [esp + 0x14]
call fcn.007cff00
add esp, 8
mov ecx, dword [esp + 0xc]
mov dword [ecx], eax
mov esi, dword [esp + 4]
mov edx, dword [esp + 8]
jmp case.0x7c89a0.218
mov eax, dword [ebp + 0x10]
lea ebx, [edx - 0x2c]
mov dword [esp + 4], esi
mov esi, edx
mov edx, 0x3b
mov ecx, dword [eax]
push 1
mov dword [esp + 0x14], ebx
push ebx
call fcn.007d8c70
add esp, 8
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 0x10]
lea ebx, [esi - 0x14]
mov edx, 0x3b
mov ecx, dword [eax]
push 1
mov dword [esp + 0x1c], ebx
push ebx
call fcn.007d8c70
add esp, 8
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 0x10]
lea ebx, [esi + 4]
mov dword [esp + 8], esi
mov edx, 0x3b
mov ecx, dword [eax]
push 1
mov dword [esp + 0x18], ebx
push ebx
call fcn.007d8c70
add esp, 8
mov ecx, dword [ebp + 0x10]
mov edx, 0x8b
mov dword [esp + 0x20], eax
push eax
push dword [esp + 0x10]
call fcn.007cff00
mov ecx, dword [ebp + 0x10]
add esp, 8
cmp byte [ecx + 0xc8], 2
mov ebx, eax
jb 0x7c9fa8
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0x20]
push dword [esp + 0x14]
call fcn.007d8f10
add esp, 4
mov ecx, dword [ebp + 0x10]
mov edx, dword [esp + 0xc]
push dword [esp + 0x18]
call fcn.007d8f10
mov ecx, dword [ebp + 0x10]
add esp, 4
mov edx, 0x8b
push ebx
push dword [esp + 0x20]
call fcn.007cff00
add esp, 8
mov ecx, dword [esp + 0x10]
jmp 0x7c9ee3
mov ebx, esi
mov esi, edx
movzx edx, word [edx + 2]
jmp 0x7c9e3d
mov ecx, dword [ecx]
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
mov edx, 0x98
push 1
push eax
call fcn.007d8c70
jmp 0x7c9e48
mov eax, dword [edx + 4]
mov dword [esp + 4], esi
cmp byte [eax], 0x23
jne 0x7ca006
movzx ecx, byte [eax + 1]
add ecx, 0xffffffd0
cmp ecx, 0xa
mov ecx, dword [ebp + 0x10]
jb 0x7ca02f
mov ebx, dword [edx + 8]
mov esi, edx
mov edx, 0x99
push ebx
push eax
call fcn.007cffc0
add esp, 8
mov ecx, dword [ebp + 0x10]
mov edx, eax
mov dword [esi + 4], eax
push ebx
call fcn.007de470
mov edx, esi
jmp 0x7cabfb
mov esi, dword [edx + 4]
mov eax, dword [edx + 8]
mov ebx, edx
mov dword [esp + 0x34], eax
mov dword [esp + 0x30], esi
cmp byte [ecx + 0x12], 0
jne 0x7ca1f7
mov edx, 0x7a04d0
movzx ecx, byte [0xbaffef]
xor eax, eax
imul edx, edx
and edx, 3
cmp edx, 3
setne al
bt ecx, eax
jb 0x7ca1d0
mov al, byte [0xbaffef]
mov esi, ebx
cmp edx, 3
mov ah, 1
setne cl
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbaffef], ah
jne 0x7ca073
mov ecx, 0x7a04d0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
setne dl
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7ca0c6
mov ebx, esi
movzx edx, byte [0xbaffef]
xor eax, eax
cmp ecx, 3
setne al
bt edx, eax
jae 0x7ca0ad
jmp 0x7ca1d0
movzx edx, byte [0xbaffef]
xor eax, eax
cmp ecx, 3
setne al
bt edx, eax
jb 0x7ca1b0
mov eax, 0x7a04d0
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov eax, dword [0xbaffd0]
sete cl
xor ecx, 0x335ac999
add ecx, 0xc40
xor eax, ecx
mov dword [0xbaffd0], eax
not eax
mov edx, dword [0xbaffd4]
imul eax, ecx
and cl, 7
lea ebx, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbaffd4], edx
or ebx, eax
not edx
mov eax, dword [0xbaffd8]
imul edx, ebx
lea ebx, [edx*4]
xor eax, edx
shr edx, 0x1d
mov dword [0xbaffd8], eax
or ebx, edx
not eax
mov edx, dword [0xbaffdc]
imul eax, ebx
lea ebx, [eax*8]
xor edx, eax
shr eax, 0x1c
mov dword [0xbaffdc], edx
or ebx, eax
not edx
mov eax, dword [0xbaffe0]
imul edx, ebx
mov ebx, edx
shl ebx, 4
xor eax, edx
shr edx, 0x1b
mov dword [0xbaffe0], eax
or edx, ebx
not eax
imul eax, edx
mov edx, dword [0xbaffe4]
mov ebx, eax
shl ebx, 5
xor edx, eax
shr eax, 0x1a
mov dword [0xbaffe4], edx
or eax, ebx
not edx
imul edx, eax
xor dword [0xbaffe8], edx
mov dl, 1
shl dl, cl
or byte [0xbaffef], dl
mov eax, 0x7a04d0
mov ebx, esi
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
setne cl
xor cl, 7
rol al, cl
and byte [0xbaffef], al
lea eax, [esp + 0x30]
push eax
push 0xbaffd0
push dword [ebp + 0x10]
call fcn.00782570
add esp, 0xc
mov esi, dword [esp + 4]
mov edx, ebx
mov dword [ebx + 4], 0
jmp case.0x7c89a0.218
mov edx, 0xad
mov dword [esp + 8], esi
push 0
push 0
call fcn.007cff00
add esp, 8
mov esi, dword [esp + 4]
test eax, eax
mov edx, ebx
mov dword [ebx + 4], eax
je case.0x7c89a0.218
mov ecx, dword [esp + 8]
add eax, 0x1c
mov esi, edx
mov edx, eax
inc ecx
call fcn.007bf280
jmp 0x7ca393
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
mov edx, dword [edx - 0x14]
push 1
push eax
call fcn.007dea40
jmp 0x7ca530
mov ecx, dword [ecx]
mov ebx, esi
mov esi, edx
lea eax, [edx - 8]
mov edx, 0x24
push 1
push eax
call fcn.007d8c70
add esp, 8
mov ecx, dword [ebp + 0x10]
mov dword [esi - 0x38], eax
mov edx, eax
mov ecx, dword [ecx]
push 0
push dword [esi - 0x20]
call fcn.007dea80
jmp 0x7ca567
mov ebx, esi
lea eax, [edx - 0x2c]
mov esi, edx
mov edx, dword [edx - 8]
push dword [esi - 0x14]
push eax
call fcn.007dead0
jmp 0x7c9d64
mov ebx, esi
lea eax, [edx - 0x20]
mov esi, edx
xor edx, edx
push 0
push eax
call fcn.007dead0
jmp 0x7c9ae7
mov dword [esp + 4], esi
lea eax, [edx - 0x38]
mov esi, edx
mov edx, dword [edx - 0x14]
push dword [esi - 0x20]
push eax
call fcn.007dead0
add esp, 8
mov ecx, dword [ebp + 0x10]
mov edx, eax
mov ebx, eax
push dword [esi + 4]
call fcn.007ded30
mov edx, esi
mov esi, dword [esp + 8]
add esp, 4
mov dword [edx - 0x38], ebx
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
lea eax, [edx - 0x2c]
mov esi, edx
xor edx, edx
push 0
push eax
call fcn.007dead0
add esp, 8
mov ecx, dword [ebp + 0x10]
mov edx, eax
mov ebx, eax
push dword [esi + 4]
call fcn.007ded30
mov edx, esi
mov esi, dword [esp + 8]
add esp, 4
mov dword [edx - 0x2c], ebx
jmp case.0x7c89a0.218
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
xor edx, edx
push 0
push eax
call fcn.007dead0
jmp 0x7c9e48
mov dword [esp + 4], esi
mov esi, edx
mov edx, dword [edx - 0x20]
push dword [esi - 8]
call fcn.007d8ad0
add esp, 4
mov ecx, dword [ebp + 0x10]
mov ebx, eax
mov edx, 0xae
push 0
push 0
call fcn.007cff00
add esp, 8
test eax, eax
mov dword [esi - 0x2c], eax
je 0x7ca387
mov dword [eax + 0x14], ebx
mov edx, esi
mov esi, dword [esp + 4]
cmp dword [ebx], 0
je case.0x7c89a0.218
mov eax, dword [ebx + 4]
mov ecx, 0x200104
mov ebx, dword [edx - 0x2c]
and ecx, dword [eax + 4]
or dword [ebx + 4], ecx
jmp case.0x7c89a0.218
mov eax, dword [ebp + 0x10]
mov edx, ebx
mov ecx, dword [eax]
call fcn.007c00f0
mov edx, esi
mov esi, dword [esp + 4]
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x14]
push dword [esi + 4]
call fcn.007defd0
mov edx, esi
mov esi, ebx
add esp, 4
mov dword [edx - 0x14], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
movzx edx, word [edx - 0xa]
push dword [esi + 4]
jmp 0x7ca528
mov eax, dword [edx + 4]
mov ecx, 0x80000000
mov dword [edx - 8], eax
or ecx, dword [edx + 8]
mov dword [edx - 4], ecx
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
lea eax, [edx - 8]
mov esi, edx
mov edx, dword [edx - 4]
mov ebx, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esi + 4]
mov ecx, edx
mov dword [esp + 8], edx
xor edx, edx
and ecx, 0x7fffffff
mov dword [esi - 4], ecx
mov ecx, ebx
push eax
call fcn.007d8ad0
add esp, 4
mov ecx, ebx
mov edx, eax
push dword [esi - 0x14]
call fcn.007d8ad0
add esp, 4
mov ecx, ebx
mov edx, eax
push 0
push dword [esp + 0x10]
call fcn.007dead0
add esp, 8
cmp dword [esp + 8], 0
mov dword [esi - 0x14], eax
js 0x7ca442
mov edx, esi
jmp 0x7ca45a
mov ecx, dword [ebp + 0x10]
mov edx, 0x13
push 0
push eax
call fcn.007cff00
mov edx, esi
add esp, 8
mov dword [esi - 0x14], eax
mov esi, dword [esp + 4]
test eax, eax
je case.0x7c89a0.218
or byte [eax + 4], 0x80
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
lea eax, [edx - 0x20]
mov esi, edx
mov edx, dword [edx - 0x1c]
mov ebx, ecx
mov dword [esp + 0xc], eax
mov eax, dword [esi - 0x14]
mov ecx, edx
mov dword [esp + 8], edx
xor edx, edx
and ecx, 0x7fffffff
mov dword [esi - 0x1c], ecx
mov ecx, ebx
push eax
call fcn.007d8ad0
add esp, 4
mov ecx, ebx
mov edx, eax
push dword [esi - 0x2c]
call fcn.007d8ad0
add esp, 4
mov ecx, ebx
mov edx, eax
push dword [esi + 4]
call fcn.007d8ad0
add esp, 4
mov ecx, ebx
mov edx, eax
push 0
push dword [esp + 0x10]
call fcn.007dead0
add esp, 8
cmp dword [esp + 8], 0
mov dword [esi - 0x2c], eax
js 0x7ca4de
mov edx, esi
jmp 0x7ca4f6
mov ecx, dword [ebp + 0x10]
mov edx, 0x13
push 0
push eax
call fcn.007cff00
mov edx, esi
add esp, 8
mov dword [esi - 0x2c], eax
mov esi, dword [esp + 4]
test eax, eax
je case.0x7c89a0.218
or byte [eax + 4], 0x80
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
movzx edx, word [edx + 2]
push 0
push dword [esi - 8]
jmp 0x7ca5a4
mov ebx, esi
mov esi, edx
mov edx, 0x33
push 0
push dword [esi - 0x14]
call fcn.007cff00
mov edx, esi
mov esi, ebx
add esp, 8
mov dword [edx - 0x14], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, 0x2d
push dword [esi + 4]
push dword [esi - 0x14]
call fcn.007cff00
add esp, 8
mov dword [esi - 0x14], eax
mov ecx, dword [ebp + 0x10]
mov edx, dword [esi + 4]
push 0x32
push eax
call fcn.007df180
mov edx, esi
mov esi, ebx
add esp, 8
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, 0xa8
push dword [esi + 4]
push dword [esi - 0x20]
call fcn.007cff00
add esp, 8
mov dword [esi - 0x20], eax
mov ecx, dword [ebp + 0x10]
mov edx, dword [esi + 4]
push 0x33
jmp 0x7ca561
mov ebx, esi
mov esi, edx
movzx edx, word [edx - 0xa]
push 0
push dword [esi + 4]
call fcn.007cff00
mov edx, esi
mov esi, ebx
add esp, 8
mov dword [edx - 8], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
xor edx, edx
cmp word [esi - 0xa], 0x69
sete dl
or edx, 0xaa
jmp 0x7ca59f
mov dword [edx + 4], 0
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
mov ebx, edx
mov esi, ecx
xor edx, edx
push dword [ebx - 0x14]
call fcn.007d8ad0
add esp, 4
mov ecx, esi
mov edx, eax
push dword [ebx + 4]
call fcn.007d8ad0
add esp, 4
mov dword [esp + 8], eax
mov ecx, esi
mov edx, 0x30
push 0
push dword [ebx - 0x2c]
call fcn.007cff00
add esp, 8
test eax, eax
mov dword [ebx - 0x2c], eax
je 0x7ca628
mov ecx, dword [esp + 8]
mov edx, ebx
mov dword [eax + 0x14], ecx
jmp 0x7ca635
mov ecx, dword [esi]
mov edx, dword [esp + 8]
call fcn.007c00f0
mov edx, ebx
cmp dword [edx - 0x20], 0
mov esi, dword [esp + 4]
mov ecx, dword [ebp + 0x10]
je case.0x7c89a0.218
mov edx, 0x13
push 0
push dword [ebx - 0x2c]
call fcn.007cff00
mov esi, dword [esp + 0xc]
mov edx, ebx
add esp, 8
mov dword [ebx - 0x2c], eax
jmp case.0x7c89a0.218
cmp dword [edx - 8], 0
mov eax, dword [edx - 0x2c]
mov ebx, edx
mov dword [esp + 4], esi
jne 0x7ca8ab
mov edx, fcn.007a3890
mov esi, ebx
mov ebx, eax
movzx ecx, byte [0xbafff7]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
not al
add al, 0x30
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7ca781
mov al, byte [0xbafff7]
cmp edx, 3
mov ah, 1
sete cl
not cl
add cl, 0x30
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbafff7], ah
jne 0x7ca6ac
mov ecx, fcn.007a3890
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 3
sete dl
not dl
add dl, 0x30
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7ca711
cmp ecx, 3
movzx edx, byte [0xbafff7]
sete al
not al
add al, 0x30
and al, 7
movzx eax, al
bt edx, eax
jae 0x7ca6f4
jmp 0x7ca781
cmp ecx, 3
movzx ecx, byte [0xbafff7]
sete al
not al
add al, 0x30
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7ca75b
mov eax, fcn.007a3890
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 1
sete cl
xor ecx, 0x93558cc7
or ecx, 0x30
xor dword [0xbafff0], ecx
and cl, 7
shl al, cl
or byte [0xbafff7], al
mov eax, fcn.007a3890
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 0xfe
sete cl
not cl
add cl, 0x30
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbafff7], al
mov edx, fcn.0081b280
movzx ecx, byte [0xbaffff]
imul edx, edx
and edx, 3
cmp edx, 3
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x7ca86d
mov al, byte [0xbaffff]
cmp edx, 3
mov ah, 1
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbaffff], ah
jne 0x7ca7ac
mov ecx, fcn.0081b280
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 0x7ca803
cmp ecx, 3
movzx edx, byte [0xbaffff]
sete al
or al, 6
movzx eax, al
bt edx, eax
jae 0x7ca7ea
jmp 0x7ca86d
cmp ecx, 3
movzx edx, byte [0xbaffff]
sete al
or al, 6
movzx eax, al
bt edx, eax
jb 0x7ca84c
mov eax, fcn.0081b280
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 3
mov al, 1
sete cl
or ecx, 0xb2eef8ce
add ecx, 0xa60
xor dword [0xbafff8], ecx
and cl, 7
shl al, cl
or byte [0xbaffff], al
mov eax, fcn.0081b280
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 [0xbaffff], al
mov eax, dword [ebp + 0x10]
mov edx, ebx
mov ecx, eax
call fcn.007df1c0
cmp dword [esi - 0x20], 0
mov eax, 0xbafff8
mov ebx, 0xbafff0
mov edx, 0x98
cmove ebx, eax
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
push ebx
call fcn.007d8c20
mov edx, esi
add esp, 4
mov dword [esi - 0x2c], eax
mov esi, dword [esp + 4]
jmp case.0x7c89a0.218
mov edx, 0x31
push 0
push eax
call fcn.007cff00
add esp, 8
mov dword [ebx - 0x2c], eax
test eax, eax
mov edx, dword [ebx - 8]
je 0x7ca8d5
mov dword [eax + 0x14], edx
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebx - 0x2c]
call fcn.007df1f0
jmp 0x7ca8df
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
call fcn.007c00f0
cmp dword [ebx - 0x20], 0
mov esi, dword [esp + 4]
mov ecx, dword [ebp + 0x10]
mov edx, ebx
je case.0x7c89a0.218
mov esi, edx
mov edx, 0x13
push 0
push dword [esi - 0x2c]
call fcn.007cff00
mov edx, esi
mov esi, dword [esp + 0xc]
add esp, 8
jmp 0x7cb760
mov ebx, esi
mov esi, edx
mov edx, 0x88
push 0
push 0
call fcn.007cff00
add esp, 8
mov dword [esi - 0x14], eax
mov ecx, dword [ebp + 0x10]
mov edx, eax
push dword [esi - 8]
call fcn.007df210
jmp 0x7cb391
mov ecx, dword [ebp + 0x10]
mov ebx, edx
mov edx, 0x31
mov dword [esp + 4], esi
push 0
push dword [ebx - 0x2c]
call fcn.007cff00
add esp, 8
mov ecx, dword [ebp + 0x10]
mov edx, eax
mov dword [ebx - 0x2c], eax
push dword [ebx - 8]
call fcn.007df210
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 8]
mov edx, ebx
add esp, 4
cmp dword [ebx - 0x20], 0
je case.0x7c89a0.218
jmp 0x7ca646
lea eax, [edx - 8]
lea ebx, [edx - 0x14]
mov dword [esp + 4], esi
mov esi, edx
xor edx, edx
push eax
push ebx
call fcn.007d8e50
add esp, 8
mov ecx, dword [ebp + 0x10]
mov ebx, eax
xor edx, edx
push 0
push 0
push 0
push 0
push 0
push 0
push eax
call fcn.007d8990
add esp, 0x1c
mov dword [esp + 0xc], eax
mov eax, dword [esi + 4]
mov dword [esp + 8], esi
test eax, eax
je 0x7ca9db
mov ecx, dword [esp + 0xc]
test ecx, ecx
cmove ebx, ecx
mov ecx, dword [ebp + 0x10]
mov edx, ebx
push eax
call fcn.007d8e30
add esp, 4
mov ebx, dword [ebp + 0x10]
mov edx, 0x31
mov ecx, ebx
push 0
mov esi, dword [esp + 0xc]
push dword [esi - 0x2c]
call fcn.007cff00
add esp, 8
mov edx, eax
mov dword [esi - 0x2c], eax
mov ecx, ebx
push dword [esp + 0xc]
call fcn.007df210
mov edx, esi
add esp, 4
cmp dword [esi - 0x20], 0
mov esi, dword [esp + 4]
je case.0x7c89a0.218
mov edx, 0x13
mov ecx, ebx
push 0
mov eax, dword [esp + 0xc]
push dword [eax - 0x2c]
call fcn.007cff00
mov edx, dword [esp + 0x10]
jmp 0x7ca905
mov ebx, esi
mov esi, edx
mov edx, 0x14
push 0
push 0
call fcn.007cff00
add esp, 8
mov dword [esi - 0x20], eax
jmp 0x7ca929
mov dword [esp + 4], esi
mov esi, edx
mov ebx, ecx
mov edx, 0x9a
push 0
push dword [esi - 0x20]
call fcn.007cff00
add esp, 8
test eax, eax
mov dword [esi - 0x2c], eax
je 0x7caaac
mov edx, esi
mov ecx, ebx
mov ebx, esi
mov esi, dword [esi - 8]
mov edx, dword [edx - 0x14]
test esi, esi
je 0x7caa96
push esi
call fcn.007d8ad0
mov ecx, dword [ebp + 0x10]
add esp, 4
mov edx, eax
mov eax, dword [ebx - 0x2c]
mov dword [eax + 0x14], edx
mov edx, dword [ebx - 0x2c]
call fcn.007df1f0
mov esi, dword [esp + 4]
mov edx, ebx
jmp case.0x7c89a0.218
mov edx, dword [esi - 0x14]
mov ecx, dword [ebx]
call fcn.007c00f0
mov edx, dword [esi - 8]
mov ecx, dword [ebx]
call fcn.007c00e0
jmp 0x7ca393
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x2c]
push dword [esi - 0x14]
call fcn.007d8ad0
add esp, 4
mov ecx, dword [ebp + 0x10]
mov edx, eax
mov dword [esi - 0x2c], eax
push dword [esi + 4]
call fcn.007d8ad0
mov edx, esi
mov esi, ebx
add esp, 4
jmp 0x7cb760
mov ebx, esi
mov esi, edx
xor edx, edx
push dword [esi - 0x14]
call fcn.007d8ad0
add esp, 4
mov ecx, dword [ebp + 0x10]
mov edx, eax
mov dword [esi - 0x20], eax
push dword [esi + 4]
call fcn.007d8ad0
mov edx, esi
mov esi, ebx
add esp, 4
mov dword [edx - 0x20], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x14]
push dword [esi + 4]
call fcn.007d8ad0
jmp 0x7ca3ad
mov ebx, esi
mov esi, edx
xor edx, edx
push dword [esi + 4]
call fcn.007d8ad0
mov edx, esi
mov esi, ebx
add esp, 4
mov dword [edx + 4], eax
jmp case.0x7c89a0.218
mov eax, dword [edx - 8]
mov dword [edx - 0x14], eax
jmp case.0x7c89a0.218
mov eax, dword [edx - 0x74]
mov ecx, dword [ebp + 0x10]
mov ebx, edx
mov dword [esp + 4], esi
mov dword [esp + 8], eax
mov eax, dword [edx - 0x5c]
mov dword [esp + 0x18], eax
mov eax, dword [edx + 4]
mov dword [esp + 0x10], eax
lea eax, [edx - 0x80]
mov dword [esp + 0x1c], eax
mov eax, dword [edx - 0x14]
mov dword [esp + 0xc], eax
lea eax, [edx - 0x2c]
xor edx, edx
push 0
mov dword [esp + 0x18], eax
push eax
call fcn.007d8e50
add esp, 8
mov ecx, dword [ebp + 0x10]
lea esi, [ebx - 0x44]
lea edx, [ebx - 0x50]
push 0
push dword [esp + 0x1c]
push 0
push dword [esp + 0x1c]
push dword [esp + 0x2c]
push dword [esp + 0x1c]
push dword [esp + 0x24]
push eax
push esi
call fcn.007d0860
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 0x28]
mov edx, ebx
add esp, 0x24
cmp byte [ecx + 0xc8], 2
jb case.0x7c89a0.218
mov eax, dword [ecx + 0xe8]
test eax, eax
je case.0x7c89a0.218
mov edx, dword [eax]
push dword [esp + 0x14]
call fcn.007d8f10
mov edx, ebx
mov esi, dword [esp + 8]
add esp, 4
jmp case.0x7c89a0.218
mov dword [edx + 4], 2
jmp case.0x7c89a0.218
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x2c]
lea eax, [esi - 0x14]
push dword [esi + 4]
push dword [esi - 8]
push eax
call fcn.007df230
jmp 0x7cb55f
mov ebx, esi
lea eax, [edx - 0x14]
mov esi, edx
xor edx, edx
push dword [esi + 4]
push dword [esi - 8]
push eax
call fcn.007df230
mov edx, esi
mov esi, ebx
add esp, 0xc
mov dword [edx - 0x14], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
push dword [esi - 8]
call fcn.007df4c0
jmp 0x7cb391
mov ebx, esi
mov esi, edx
xor edx, edx
push dword [esi + 4]
call fcn.007e01d0
jmp 0x7cb391
mov ebx, esi
mov esi, edx
lea edx, [edx - 8]
jmp 0x7cac78
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
lea edx, [edx - 8]
push 0
push 0
push eax
call fcn.007e02b0
mov edx, esi
mov esi, ebx
add esp, 0xc
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
lea eax, [edx + 4]
lea ebx, [edx - 0x14]
mov esi, edx
lea edx, [edx - 0x20]
push 0
push eax
push ebx
call fcn.007e02b0
mov edx, esi
mov esi, dword [esp + 0x10]
add esp, 0xc
jmp case.0x7c89a0.218
mov dword [esp + 4], esi
lea eax, [edx - 8]
lea ebx, [edx - 0x20]
mov esi, edx
lea edx, [edx - 0x2c]
jmp 0x7cacbd
mov dword [esp + 4], esi
lea eax, [edx + 4]
lea ebx, [edx - 0x14]
mov esi, edx
lea edx, [edx - 0x20]
push 1
jmp 0x7cacbf
mov dword [esp + 4], esi
lea eax, [edx - 8]
lea ebx, [edx - 0x20]
mov esi, edx
lea edx, [edx - 0x2c]
push 1
jmp 0x7cacbf
mov eax, dword [edx - 0x20]
mov ebx, esi
mov esi, edx
mov dword [esp + 0x28], eax
mov ecx, dword [edx + 4]
sub ecx, eax
lea eax, [esp + 0x28]
add ecx, dword [edx + 8]
mov dword [esp + 0x2c], ecx
mov ecx, dword [ebp + 0x10]
mov edx, dword [edx - 8]
push eax
call fcn.007e58d0
jmp 0x7cb391
mov ebx, esi
lea eax, [edx - 0x44]
mov esi, edx
lea edx, [edx - 0x50]
push dword [esi - 0x5c]
push dword [esi - 0x74]
push dword [esi + 4]
push dword [esi - 0x14]
push dword [esi - 0x28]
push dword [esi - 0x2c]
push dword [esi - 0x38]
push eax
call fcn.007e6090
mov edx, esi
add esp, 0x20
cmp dword [esi - 0x40], 0
jne 0x7cad7a
mov eax, dword [edx - 0x50]
mov ecx, dword [edx - 0x4c]
mov dword [edx - 0x70], ecx
mov dword [edx - 0x74], eax
mov esi, ebx
jmp case.0x7c89a0.218
mov eax, dword [edx - 0x44]
mov ecx, dword [edx - 0x40]
jmp 0x7cad6d
movzx eax, word [edx + 2]
mov dword [edx + 4], eax
jmp case.0x7c89a0.218
mov dword [edx - 8], 0x41
jmp case.0x7c89a0.218
mov dword [edx + 0x10], 0x21
jmp case.0x7c89a0.218
movzx eax, word [edx + 2]
mov dword [edx + 4], eax
mov dword [edx + 8], 0
jmp case.0x7c89a0.218
mov dword [edx - 0x14], 0x7f
mov eax, dword [edx + 4]
mov dword [edx - 0x10], eax
jmp case.0x7c89a0.218
mov dword [edx + 0x10], 0
jmp case.0x7c89a0.218
mov eax, dword [edx - 0x14]
mov ecx, dword [edx - 8]
mov eax, dword [eax + 0x28]
mov dword [eax + 0x24], ecx
mov eax, dword [edx - 0x14]
mov ecx, dword [edx - 8]
mov dword [eax + 0x28], ecx
jmp case.0x7c89a0.218
mov eax, dword [edx - 8]
mov dword [eax + 0x28], eax
jmp case.0x7c89a0.218
mov dword [esp + 8], edx
mov edx, fcn.0077ddb0
mov dword [esp + 4], esi
imul edx, edx
movzx ecx, byte [0xbb0063]
and edx, 3
cmp edx, 2
sete al
or al, 6
movzx eax, al
bt ecx, eax
jb 0x7caf1f
mov al, byte [0xbb0063]
cmp edx, 2
mov ah, 1
sete cl
or cl, 6
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb0063], ah
jne 0x7cae2f
mov ecx, fcn.0077ddb0
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 2
sete dl
or dl, 6
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7cae89
cmp ecx, 2
movzx edx, byte [0xbb0063]
sete al
or al, 6
movzx eax, al
bt edx, eax
jae 0x7cae6d
jmp 0x7caf1f
xor edx, edx
cmp ecx, 2
movzx ecx, byte [0xbb0063]
sete dl
or edx, 0x65f34936
add edx, 0x800
mov eax, edx
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7caefe
mov ecx, 0xbb0000
xor eax, eax
mov ebx, dword [ecx]
mov dword [esp + 0xc], ecx
mov ecx, eax
mov esi, edx
inc eax
shl esi, cl
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov ecx, dword [esp + 0xc]
or edx, esi
mov dword [ecx], ebx
not ebx
add ecx, 4
imul edx, ebx
cmp eax, 0x18
jne 0x7caeb7
mov eax, fcn.0077ddb0
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 1
sete cl
or cl, 6
shl al, cl
or byte [0xbb0063], al
mov eax, fcn.0077ddb0
imul eax, eax
and eax, 3
cmp eax, 2
mov al, 0xfe
sete cl
or cl, 6
xor cl, 7
rol al, cl
and byte [0xbb0063], al
mov esi, dword [esp + 8]
mov eax, dword [esi + 4]
mov ecx, dword [esi + 8]
mov dword [esi - 0x10], ecx
mov dword [esi - 0x14], eax
push 0xbb0000
push dword [ebp + 0x10]
call fcn.00782570
mov edx, esi
add esp, 8
mov esi, dword [esp + 4]
jmp case.0x7c89a0.218
mov ecx, fcn.00830370
mov ebx, fcn.00830370
mov dword [esp + 8], edx
mov dword [esp + 4], esi
xor eax, eax
or ecx, 2
xor ebx, 2
mov dword [esp + 0xc], ecx
add ecx, ebx
sete al
movzx edx, byte [0xbb00cb]
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt edx, eax
jb 0x7cb0b2
mov al, byte [0xbb00cb]
mov edx, dword [esp + 0xc]
xor ecx, ecx
add edx, ebx
sete cl
mov edx, ecx
xor edx, 1
lea ecx, [edx + ecx*2]
mov dl, 1
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb00cb], dl
jne 0x7caf8a
mov ebx, fcn.00830370
mov edx, fcn.00830370
movzx eax, al
or ebx, 2
xor edx, 2
mov ecx, ebx
add ecx, edx
mov ecx, 0
sete cl
mov esi, ecx
xor ecx, 1
lea ecx, [ecx + esi*2]
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x7cb004
mov ecx, ebx
xor eax, eax
movzx esi, byte [0xbb00cb]
add ecx, edx
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
bt esi, eax
jae 0x7cafe2
jmp 0x7cb0b2
xor eax, eax
add ebx, edx
movzx esi, byte [0xbb00cb]
sete al
mov ecx, eax
xor ecx, 0xa1420931
lea edx, [ecx + eax*2 + 0x990]
mov eax, edx
and al, 7
movzx eax, al
bt esi, eax
jb 0x7cb086
mov ecx, 0xbb0070
xor eax, eax
mov ebx, dword [ecx]
mov dword [esp + 0xc], ecx
mov ecx, eax
mov esi, edx
inc eax
shl esi, cl
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov ecx, dword [esp + 0xc]
or edx, esi
mov dword [ecx], ebx
not ebx
add ecx, 4
imul edx, ebx
cmp eax, 0x16
jne 0x7cb034
mov eax, fcn.00830370
mov ecx, fcn.00830370
xor edx, edx
xor ecx, 2
or eax, 2
add eax, ecx
sete dl
mov eax, edx
xor eax, 1
lea ecx, [eax + edx*2]
mov dl, 1
shl dl, cl
or byte [0xbb00cb], dl
mov eax, fcn.00830370
mov ecx, fcn.00830370
xor edx, edx
xor ecx, 2
or eax, 2
add eax, ecx
sete dl
mov eax, edx
xor eax, 1
lea ecx, [eax + edx*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb00cb], al
push 0xbb0070
push dword [ebp + 0x10]
call fcn.00782570
add esp, 8
jmp 0x7c9ee5
mov dword [esp + 8], edx
mov edx, fcn.007b2510
xor eax, eax
mov dword [esp + 4], esi
imul edx, edx
movzx esi, byte [0xbb012b]
and edx, 3
cmp edx, 3
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt esi, eax
jb 0x7cb231
mov al, byte [0xbb012b]
xor ecx, ecx
cmp edx, 3
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 [0xbb012b], ah
jne 0x7cb105
mov ecx, fcn.007b2510
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 + 6]
and dl, 7
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x7cb180
xor eax, eax
cmp ecx, 3
movzx esi, byte [0xbb012b]
sete al
mov edx, eax
xor edx, 1
lea eax, [eax + edx*2 + 6]
and al, 7
movzx eax, al
bt esi, eax
jae 0x7cb159
jmp 0x7cb231
xor eax, eax
cmp ecx, 3
movzx esi, byte [0xbb012b]
sete al
mov ecx, eax
not ecx
and ecx, 0x1c1
lea edx, [eax + ecx*2 - 0x5cc5f5f2]
mov eax, edx
and al, 7
movzx eax, al
bt esi, eax
jb 0x7cb205
mov ecx, 0xbb00d0
xor eax, eax
mov ebx, dword [ecx]
mov dword [esp + 0xc], ecx
mov ecx, eax
mov esi, edx
inc eax
shl esi, cl
xor cl, 0x1f
xor ebx, edx
shr edx, cl
mov ecx, dword [esp + 0xc]
or edx, esi
mov dword [ecx], ebx
not ebx
add ecx, 4
imul edx, ebx
cmp eax, 0x16
jne 0x7cb1b3
mov eax, fcn.007b2510
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 + 6]
mov al, 1
and cl, 7
shl al, cl
or byte [0xbb012b], al
mov eax, fcn.007b2510
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 + 6]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbb012b], al
push 0xbb00d0
jmp 0x7cb0b7
movzx eax, byte [edx - 0x44]
mov ebx, esi
mov esi, edx
lea edx, [edx - 0x38]
push dword [esi + 4]
push dword [esi - 0x50]
push eax
push dword [esi - 8]
push dword [esi - 0x14]
call fcn.007e7cd0
mov edx, esi
mov esi, ebx
add esp, 0x14
mov dword [edx - 0x50], eax
jmp case.0x7c89a0.218
movzx eax, byte [edx - 0x44]
mov ebx, esi
mov esi, edx
lea edx, [edx - 0x2c]
push dword [esi + 4]
push dword [esi - 0x50]
push dword [esi - 8]
push eax
push dword [esi - 0x14]
push dword [esi - 0x20]
call fcn.007e7d60
mov edx, esi
mov esi, ebx
add esp, 0x18
mov dword [edx - 0x50], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
lea edx, [edx - 0x20]
push dword [esi + 4]
push dword [esi - 0x38]
push dword [esi - 8]
call fcn.007e7e00
mov edx, esi
mov esi, ebx
add esp, 0xc
mov dword [edx - 0x38], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 8]
mov ecx, dword [ecx]
push dword [esi + 4]
push dword [esi - 0x14]
call fcn.007e7e60
jmp 0x7ca530
mov ebx, esi
mov esi, edx
mov edx, 0x47
push 0
push 0
call fcn.007cff00
mov edx, esi
mov esi, ebx
add esp, 8
test eax, eax
mov dword [edx - 0x20], eax
je case.0x7c89a0.218
mov byte [eax + 1], 4
jmp case.0x7c89a0.218
mov ecx, dword [ecx]
mov ebx, esi
lea eax, [edx - 8]
mov esi, edx
mov edx, 0x47
push 1
push eax
call fcn.007d8c70
mov edx, esi
mov esi, ebx
add esp, 8
test eax, eax
mov dword [edx - 0x38], eax
je case.0x7c89a0.218
mov cl, byte [edx - 0x20]
mov byte [eax + 1], cl
jmp case.0x7c89a0.218
mov dword [edx + 4], 1
jmp case.0x7c89a0.218
mov dword [edx + 4], 3
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
push dword [esi - 8]
call fcn.007e7eb0
jmp 0x7cb391
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x20]
push dword [esi + 4]
push dword [esi - 8]
call fcn.007e8180
jmp 0x7ca567
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
call fcn.007e8310
jmp 0x7c9632
mov ebx, esi
mov esi, edx
xor edx, edx
push 0
call fcn.007e8470
mov edx, esi
mov esi, ebx
add esp, 4
jmp case.0x7c89a0.218
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
lea edx, [edx - 8]
push eax
jmp 0x7cb38c
mov ebx, esi
mov esi, edx
xor edx, edx
push 0
call fcn.007e8830
jmp 0x7cb391
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
lea edx, [edx - 8]
push eax
call fcn.007e8830
jmp 0x7cb391
mov ebx, esi
lea eax, [edx + 4]
mov esi, edx
mov edx, dword [edx - 0x20]
push eax
call fcn.007e8960
jmp 0x7cb391
mov eax, dword [ecx + 0xbc]
mov ebx, esi
mov esi, edx
lea edx, [edx - 8]
sub eax, dword [esi - 8]
add eax, dword [ecx + 0xc0]
mov dword [esi - 4], eax
call fcn.007e9430
jmp 0x7c9632
mov ebx, esi
mov esi, edx
call fcn.007cdcd0
mov edx, dword [esi + 4]
mov ecx, dword [ebp + 0x10]
call fcn.007ea590
jmp 0x7c9632
mov dword [esp + 4], esi
lea eax, [edx + 4]
lea ebx, [edx - 0x14]
mov esi, edx
mov edx, dword [edx - 0x38]
push eax
push ebx
call fcn.007eac90
mov edx, esi
mov esi, dword [esp + 0xc]
add esp, 8
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
xor edx, edx
call fcn.007eb160
jmp 0x7c9632
mov ebx, esi
mov esi, edx
lea edx, [edx + 4]
call fcn.007eb160
jmp 0x7c9632
mov dword [esp + 4], esi
mov esi, edx
lea eax, [edx + 4]
lea ebx, [edx - 0x14]
lea edx, [edx - 0x20]
push dword [esi - 0x2c]
push eax
push ebx
call fcn.007eb3e0
jmp 0x7cacc6
mov ebx, esi
mov esi, edx
call fcn.007eb4a0
jmp 0x7c9632
mov ebx, esi
mov esi, edx
lea edx, [edx + 4]
call fcn.007eb4c0
jmp 0x7c9632
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
push 1
call fcn.007eb4f0
jmp 0x7cb391
mov ebx, esi
lea eax, [edx - 0x38]
mov esi, edx
xor edx, edx
push dword [esi - 8]
push dword [esi - 0x2c]
push eax
call fcn.007eb520
jmp 0x7cb2ab
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x50]
lea eax, [esi - 0x38]
push dword [esi - 8]
push dword [esi - 0x2c]
push eax
call fcn.007eb520
mov edx, esi
mov esi, ebx
add esp, 0xc
mov dword [edx - 0x50], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
push dword [esi - 0x14]
call fcn.007eb7c0
mov edx, esi
mov esi, ebx
add esp, 4
mov eax, dword [edx - 0x14]
mov ecx, dword [edx + 4]
mov dword [ecx + 0x24], eax
mov eax, dword [edx + 4]
mov dword [edx - 0x14], eax
jmp case.0x7c89a0.218
cmp dword [edx - 8], 0
jne 0x7cb524
xor eax, eax
jmp 0x7cb760
mov ebx, esi
mov esi, edx
mov edx, dword [edx - 0x2c]
mov ecx, dword [ecx]
push 0
push dword [esi - 0x28]
call fcn.007bf5a0
mov edx, esi
mov esi, ebx
add esp, 8
mov ecx, dword [edx - 8]
mov dword [ecx], eax
mov eax, dword [edx - 8]
jmp 0x7cb760
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
push 0
push dword [esi - 8]
push dword [esi - 0x14]
call fcn.007eb990
mov edx, esi
mov esi, ebx
add esp, 0xc
jmp 0x7cb760
mov ebx, esi
lea eax, [edx - 0x38]
mov esi, edx
mov edx, dword [edx + 4]
push eax
push dword [esi - 8]
push dword [esi - 0x14]
call fcn.007eb990
jmp 0x7cb2ab
mov ebx, esi
mov esi, edx
mov edx, dword [edx + 4]
push 0
push dword [esi - 8]
push 0
call fcn.007eb990
mov edx, esi
mov esi, ebx
add esp, 0xc
mov dword [edx - 0x20], eax
jmp case.0x7c89a0.218
mov ebx, esi
lea eax, [edx - 0x2c]
mov esi, edx
mov edx, dword [edx + 4]
push eax
push dword [esi - 8]
push 0
jmp 0x7cb55a
mov ebx, esi
lea eax, [edx - 8]
mov esi, edx
mov edx, dword [edx + 4]
push eax
push 0
push 0
call fcn.007eb990
mov edx, esi
mov esi, ebx
add esp, 0xc
mov dword [edx - 8], eax
jmp case.0x7c89a0.218
mov ebx, esi
mov esi, edx
xor edx, edx
push 0
push 0
push 0x55
push 0
push 0x5a
call fcn.007eb9e0
mov edx, esi
mov esi, ebx
add esp, 0x14
mov dword [edx + 0x10], eax
jmp case.0x7c89a0.218
mov ebx, esi
movzx eax, byte [edx + 4]
mov esi, edx
mov edx, dword [edx - 0x14]
push eax
push 0
push 0x55
push dword [esi - 4]
push dword [esi - 8]
call fcn.007eb9e0
mov edx, esi
mov esi, ebx
add esp, 0x14
mov dword [edx - 0x14], eax
jmp case.0x7c89a0.218
mov ebx, esi
movzx eax, byte [edx + 4]
mov esi, edx
mov edx, dword [edx - 0x38]
push eax
push dword [esi - 4]
push dword [esi - 8]
push dword [esi - 0x1c]
push dword [esi - 0x20]
call fcn.007eb9e0
mov edx, esi
mov esi, ebx
add esp, 0x14
mov dword [edx - 0x38], eax
jmp case.0x7c89a0.218
movzx eax, word [edx - 0xa]
mov dword [edx - 8], eax
mov dword [edx - 4], 0
jmp case.0x7c89a0.218
movzx eax, word [edx + 2]
mov ecx, dword [edx - 8]
mov dword [edx - 8], eax
mov dword [edx - 4], ecx
jmp case.0x7c89a0.218
mov byte [edx + 0x10], 0
jmp case.0x7c89a0.218
mov al, byte [edx + 4]
mov byte [edx - 8], al
jmp case.0x7c89a0.218
mov al, byte [edx - 0xa]
mov byte [edx - 8], al
jmp case.0x7c89a0.218
mov al, byte [edx + 2]
mov byte [edx + 4], al
jmp case.0x7c89a0.218
mov eax, dword [edx - 8]
mov ecx, dword [edx + 4]
mov dword [ecx + 0x28], eax
mov eax, dword [edx + 4]
mov dword [edx - 8], eax
jmp case.0x7c89a0.218
mov ecx, dword [ecx]
mov dword [esp + 8], edx
mov dword [esp + 4], esi
mov edx, 0x64
push 0
call fcn.0077efb0
add esp, 4
mov ebx, eax
test eax, eax
je 0x7cb6f0
mov edx, dword [esp + 8]
mov byte [ebx + 0x10], 0xa3
mov esi, dword [esp + 4]
mov eax, dword [edx + 4]
mov dword [ebx + 0x28], eax
mov dword [edx + 4], ebx
jmp case.0x7c89a0.218
mov esi, dword [esp + 8]
mov eax, dword [ebp + 0x10]
mov edx, dword [esi + 4]
mov ecx, dword [eax]
call fcn.007c00e0
mov edx, esi
mov dword [esi + 4], ebx
mov esi, dword [esp + 4]
jmp case.0x7c89a0.218
mov eax, dword [edx - 8]
mov dword [edx - 0x20], eax
jmp case.0x7c89a0.218
mov eax, dword [ebp + 0x10]
mov ebx, edx
mov edx, 0x64
mov dword [esp + 4], esi
mov ecx, dword [eax]
push 0
call fcn.0077efb0
mov ecx, dword [ebp + 0x10]
mov esi, dword [esp + 8]
mov edx, ebx
add esp, 4
test eax, eax
mov dword [ebx - 8], eax
je case.0x7c89a0.218
mov edx, dword [ebx + 4]
mov ecx, dword [ecx]
push 0
push dword [ebx + 8]
call fcn.007bf5a0
mov esi, dword [esp + 0xc]
mov edx, ebx
add esp, 8
mov ecx, dword [ebx - 8]
mov dword [ecx], eax
jmp case.0x7c89a0.218
mov eax, dword [edx - 8]
mov dword [edx - 0x2c], eax
mov ebx, edx
lea esi, [esi + esi*2]
movzx edx, word [edi + edi + 0xb47bcc]
movzx ecx, word [ebx + esi*4]
mov dword [esp + 8], edx
call fcn.007ebcd0
mov ecx, dword [esp + 0x24]
mov edi, eax
lea eax, [ebx + esi*4 + 0xc]
mov dword [ecx], eax
mov eax, dword [esp + 8]
mov word [ebx + esi*4 + 0xc], di
mov word [ebx + esi*4 + 0xe], ax
mov ecx, dword [esp + 0x58]
xor ecx, ebp
call fcn.00980459
mov eax, edi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret