Function at 0x775890
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0xd0
mov eax, dword [0xbcbae0]
mov esi, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
xor eax, ebp
mov dword [esp + 0xc8], eax
test byte [esi + 0x15], 2
jne 0x7758cd
mov al, 1
mov dword [esp + 0x18], ecx
mov dword [esp + 0x44], 0
mov dword [esp + 0x34], eax
jmp 0x7758e2
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x34], 0
mov dword [esp + 0x18], ecx
mov dword [esp + 0x44], eax
mov eax, fcn.007f17e0
mov ecx, 3
mov esi, dword [ebp + 0xc]
mov edi, 0x83a1b0
mov dword [esp + 0x10], 0
sub ecx, eax
imul edi, edi
mov dword [esp + 0x5c], ecx
mov ecx, 0x7a3b50
and edi, 3
and ecx, 1
mov dword [esp + 0x64], edi
inc ecx
mov dword [esp + 0x60], ecx
cmp edi, 2
movzx ecx, byte [0xbabae3]
sete al
xor al, 5
movzx eax, al
bt ecx, eax
jb 0x7759f1
mov al, byte [0xbabae3]
cmp edi, 2
mov dl, 1
sete cl
or cl, 0xfa
add cl, 8
shl dl, cl
or dl, al
lock cmpxchg byte [0xbabae3], dl
jne 0x775939
cmp edi, 2
movzx eax, al
sete cl
or cl, 0xfa
add cl, 8
movzx ecx, cl
bt eax, ecx
jae 0x775985
cmp edi, 2
movzx ecx, byte [0xbabae3]
sete al
xor al, 5
movzx eax, al
bt ecx, eax
jae 0x77596c
jmp 0x7759f1
cmp edi, 2
movzx ecx, byte [0xbabae3]
sete al
xor al, 5
movzx eax, al
bt ecx, eax
jb 0x7759db
xor ecx, ecx
cmp edi, 2
mov eax, dword [0xbabad8]
sete cl
xor ecx, 0xe3faf31d
add ecx, 0x900
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbabad8], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbabadc], edx
mov dl, 1
shl dl, cl
or byte [0xbabae3], dl
cmp edi, 2
mov al, 0xfe
sete cl
or cl, 0xfa
add cl, 8
rol al, cl
and byte [0xbabae3], al
mov al, byte [esi]
cmp al, 0x25
jne 0x7759fb
mov edi, esi
jmp 0x775a30
test al, al
mov edi, esi
je case.default.0x776068
movzx eax, byte [edi + 1]
inc edi
cmp al, 0x25
je 0x775a12
test al, al
jne 0x775a05
mov eax, edi
sub eax, esi
push eax
push esi
push dword [ebp + 8]
call fcn.007774d0
add esp, 0xc
cmp byte [edi], 0
mov dword [esp + 0x10], esi
je case.default.0x776068
mov al, byte [edi + 1]
test al, al
je 0x775a9c
inc edi
mov dword [esp + 4], 0xffffffff
mov dword [esp + 0x38], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x24], 0
mov dword [esp + 0xc], 0
mov esi, edi
movsx ebx, al
xor eax, eax
mov dword [esp + 8], 0
lea edi, [ebx - 0x20]
cmp edi, 0x4c
ja case.0x775a95.34
mov cl, 1
jmp dword [edi*4 + 0xb4f32c]
mov edx, fcn.0079f830
movzx ecx, byte [0xbaba9f]
mov esi, dword [ebp + 8]
imul edx, edx
and edx, 3
cmp edx, 1
seta al
or al, 2
movzx eax, al
bt ecx, eax
jb 0x775b8b
mov al, byte [0xbaba9f]
cmp edx, 1
mov ah, 1
seta cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbaba9f], ah
jne 0x775aca
mov ecx, fcn.0079f830
movzx eax, al
imul ecx, ecx
and ecx, 3
cmp ecx, 1
seta dl
or dl, 2
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x775b21
cmp ecx, 1
movzx edx, byte [0xbaba9f]
seta al
or al, 2
movzx eax, al
bt edx, eax
jae 0x775b08
jmp 0x775b8b
cmp ecx, 1
movzx edx, byte [0xbaba9f]
seta al
or al, 2
movzx eax, al
bt edx, eax
jb 0x775b6a
mov eax, fcn.0079f830
xor ecx, ecx
imul eax, eax
and eax, 3
cmp eax, 1
mov al, 1
seta cl
or ecx, 0x11130682
add ecx, 0xc0
xor dword [0xbaba98], ecx
and cl, 7
shl al, cl
or byte [0xbaba9f], al
mov eax, fcn.0079f830
imul eax, eax
and eax, 3
cmp eax, 1
mov al, 0xfe
seta cl
or cl, 2
xor cl, 7
rol al, cl
and byte [0xbaba9f], al
push 1
push 0xbaba98
push esi
call fcn.007774d0
add esp, 0xc
jmp case.default.0x776068
mov al, 0x2b
mov dword [esp + 0x3c], eax
jmp 0x775ca6
mov al, 0x20
mov dword [esp + 0x3c], eax
jmp 0x775ca6
mov al, 1
mov dword [esp + 0x50], eax
jmp 0x775ca6
mov al, 1
mov dword [esp + 0x30], eax
jmp 0x775ca6
mov al, 1
mov dword [esp + 0x48], eax
jmp 0x775ca6
mov al, 0x2c
mov dword [esp + 0x38], eax
jmp 0x775ca6
mov al, byte [esi + 1]
cmp al, 0x6c
je 0x775bee
inc esi
mov cl, 1
jmp 0x775bf6
mov al, byte [esi + 2]
add esi, 2
mov cl, 2
movsx ebx, al
mov eax, ecx
lea ecx, [ebx - 0x25]
mov dword [esp + 0x20], eax
cmp ecx, 0x55
ja case.0x775c0b.38
jmp dword [ecx*4 + 0xb4f460]
mov dl, byte [esi + 1]
add ebx, 0xffffffd0
lea ecx, [esi + 1]
mov dh, dl
movsx edi, dl
add dh, 0xd0
cmp dh, 9
ja 0x775c41
mov esi, ecx
lea eax, [ebx + ebx*4]
inc ecx
movzx edx, byte [esi + 1]
lea ebx, [edi + eax*2 - 0x30]
mov eax, edx
movsx edi, dl
add al, 0xd0
cmp al, 0xa
jb 0x775c28
and ebx, 0x7fffffff
cmp dl, 0x2e
mov dword [esp + 0xc], ebx
je 0x775ca6
cmp dl, 0x6c
je 0x775ca6
xor eax, eax
mov ebx, edi
mov esi, ecx
jmp case.0x775a95.34
cmp byte [esp + 0x34], 0
jne 0x775c6f
mov ecx, dword [esp + 0x44]
call fcn.00777510
jmp 0x775c7c
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x18], ecx
test eax, eax
jns 0x775c99
mov edx, eax
mov ecx, 0
neg edx
cmp eax, 0x80000000
cmove edx, ecx
mov cl, 1
mov eax, edx
mov dword [esp + 0x24], ecx
movsx ebx, byte [esi + 1]
mov dword [esp + 0xc], eax
cmp ebx, 0x2e
jne 0x775cd2
mov eax, dword [esp + 0x24]
mov ecx, eax
mov al, byte [esi + 1]
inc esi
mov dword [esp + 0x24], ecx
test al, al
jne 0x775a7a
mov ecx, dword [esp + 0xc8]
xor ecx, ebp
call fcn.00980459
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp bl, 0x6c
je 0x775ca6
inc esi
xor eax, eax
jmp case.0x775a95.34
movsx ebx, byte [esi + 1]
cmp ebx, 0x2a
je 0x775d0f
mov ecx, ebx
inc esi
xor eax, eax
add cl, 0xd0
jmp 0x775d03
lea ecx, [eax + eax*4]
lea eax, [ebx + ecx*2 - 0x30]
movsx ebx, byte [esi + 1]
inc esi
mov ecx, ebx
add cl, 0xd0
cmp cl, 0xa
jb 0x775cf2
and eax, 0x7fffffff
jmp 0x775d4c
cmp byte [esp + 0x34], 0
jne 0x775d21
mov ecx, dword [esp + 0x44]
call fcn.00777510
jmp 0x775d2e
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x18], ecx
test eax, eax
jns 0x775d45
mov edx, eax
mov ecx, 0xffffffff
neg edx
cmp eax, 0x80000000
cmove edx, ecx
mov eax, edx
movsx ebx, byte [esi + 2]
add esi, 2
cmp ebx, 0x6c
mov dword [esp + 4], eax
jne 0x775cd8
dec esi
jmp 0x775ca6
mov dword [esp + 8], 1
jmp case.0x775c0b.100
mov dword [esp + 8], 2
jmp case.0x775c0b.100
mov dword [esp + 8], 3
jmp case.0x775c0b.100
mov dword [esp + 8], 4
jmp case.0x775c0b.100
mov dword [esp + 8], 5
jmp case.0x775c0b.100
mov dword [esp + 8], 6
jmp case.0x775c0b.100
mov dword [esp + 8], 7
jmp case.0x775c0b.100
mov dword [esp + 8], 8
jmp case.0x775c0b.100
mov dword [esp + 8], 9
jmp case.0x775c0b.100
mov dword [esp + 8], 0xa
jmp case.0x775c0b.100
mov dword [esp + 8], 0xb
jmp case.0x775c0b.100
mov dword [esp + 8], 0xc
jmp case.0x775c0b.100
mov dword [esp + 8], 0xd
jmp case.0x775c0b.100
mov dword [esp + 8], 0xe
jmp case.0x775c0b.100
mov dword [esp + 8], 0xf
jmp case.0x775c0b.100
mov dword [esp + 8], 0x10
jmp case.0x775c0b.100
mov dword [esp + 8], 0x11
jmp case.0x775c0b.100
mov dword [esp + 8], 0x12
jmp case.0x775c0b.100
mov dword [esp + 8], 0x13
jmp case.0x775c0b.100
mov dword [esp + 8], 0x14
jmp case.0x775c0b.100
mov dword [esp + 8], 0x16
mov edx, fcn.00814560
mov edi, fcn.00814560
xor eax, eax
movzx ebx, byte [0xbabad7]
or edx, 2
xor edi, 2
mov ecx, edx
add ecx, edi
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt ebx, eax
jb 0x77604c
mov al, byte [0xbabad7]
mov ebx, edx
xor ecx, ecx
mov ah, 1
add ebx, edi
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 [0xbabad7], ah
jne 0x775e7f
mov ebx, edx
xor ecx, ecx
movzx eax, al
add ebx, edi
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ecx + ebx*2 + 6]
mov ebx, edi
and cl, 7
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x775ef4
mov ecx, edx
xor eax, eax
movzx edi, byte [0xbabad7]
add ecx, ebx
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edi, eax
jae 0x775ecc
jmp 0x77604c
mov ecx, edx
xor eax, eax
movzx edi, byte [0xbabad7]
add ecx, ebx
sete al
mov ecx, eax
xor ecx, 1
lea eax, [eax + ecx*2 + 6]
and al, 7
movzx eax, al
bt edi, eax
jb 0x77602c
mov ecx, edx
xor eax, eax
mov dword [esp + 0x4c], ebx
add ecx, ebx
sete al
mov ecx, eax
not ecx
and ecx, 0x301
lea ecx, [eax + ecx*2 + 0x9808cb6]
mov eax, dword [0xbabab0]
mov edi, ecx
xor eax, ecx
mov dword [0xbabab0], eax
not eax
mov ebx, dword [0xbabab4]
imul eax, ecx
lea ecx, [eax + eax]
xor ebx, eax
shr eax, 0x1e
mov dword [0xbabab4], ebx
or ecx, eax
not ebx
mov eax, dword [0xbabab8]
imul ebx, ecx
lea ecx, [ebx*4]
xor eax, ebx
shr ebx, 0x1d
mov dword [0xbabab8], eax
or ecx, ebx
not eax
imul eax, ecx
mov ecx, dword [0xbababc]
lea ebx, [eax*8]
xor ecx, eax
shr eax, 0x1c
mov dword [0xbababc], ecx
or ebx, eax
not ecx
mov eax, dword [0xbabac0]
imul ecx, ebx
mov ebx, ecx
shl ebx, 4
xor eax, ecx
shr ecx, 0x1b
mov dword [0xbabac0], eax
or ecx, ebx
not eax
imul eax, ecx
mov ecx, dword [0xbabac4]
mov ebx, eax
shl ebx, 5
xor ecx, eax
shr eax, 0x1a
mov dword [0xbabac4], ecx
or eax, ebx
not ecx
imul ecx, eax
mov eax, dword [0xbabac8]
mov ebx, ecx
shl ebx, 6
xor eax, ecx
shr ecx, 0x19
mov dword [0xbabac8], eax
or ecx, ebx
not eax
imul eax, ecx
mov ecx, dword [0xbabacc]
mov ebx, eax
shl ebx, 7
xor ecx, eax
shr eax, 0x18
or eax, ebx
mov dword [0xbabacc], ecx
not ecx
mov ebx, dword [esp + 0x4c]
imul ecx, eax
mov al, 1
xor dword [0xbabad0], ecx
mov ecx, edi
and cl, 7
shl al, cl
or byte [0xbabad7], al
xor eax, eax
add edx, ebx
sete al
mov ecx, eax
xor ecx, 1
lea ecx, [eax + ecx*2 + 6]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbabad7], al
mov ebx, dword [esp + 8]
lea ecx, [ebx + ebx*2]
movzx eax, byte [ecx + ecx + 0xb4347a]
cmp eax, 0x10
ja case.default.0x776068
mov dword [esp + 0x4c], esi
jmp dword [eax*4 + 0xb4f5b8]
mov al, 1
mov dword [esp + 0x20], eax
mov dword [esp + 0x38], 0
mov eax, 0x3e0ffa
mov dword [esp + 0x54], ecx
bt eax, ebx
jb 0x776141
cmp byte [esp + 0x34], 0
mov eax, dword [esp + 0x20]
jne 0x7760ad
mov ecx, dword [esp + 0x44]
call fcn.00777510
mov edi, dword [esp + 0x18]
mov dword [esp + 0x28], eax
jmp 0x7760eb
mov edi, dword [esp + 0x18]
test al, al
je 0x7760dd
mov esi, dword [esp + 0xc]
cmp al, 2
jne 0x7760cd
mov eax, dword [edi]
mov edx, dword [edi + 4]
lea ecx, [edi + 8]
mov edi, ecx
mov dword [esp + 0x28], eax
jmp 0x7760ef
mov eax, dword [edi]
add edi, 4
mov edx, eax
mov dword [esp + 0x28], eax
sar edx, 0x1f
jmp 0x7760ef
mov eax, dword [edi]
add edi, 4
mov edx, eax
mov dword [esp + 0x28], eax
sar edx, 0x1f
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x3c]
test edx, edx
jns 0x7761a7
mov dword [esp + 0xc], esi
mov esi, dword [esp + 0x28]
mov eax, edx
mov dword [esp + 0x18], edi
mov edi, edx
mov edx, 0
xor eax, 0x80000000
mov ecx, esi
neg ecx
sbb edx, edi
or eax, esi
mov eax, 0x80000000
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x18]
cmove edx, eax
mov eax, 0
cmove ecx, eax
mov dword [esp + 0x28], ecx
mov cl, 0x2d
jmp 0x7761a3
cmp byte [esp + 0x34], 0
mov eax, dword [esp + 0x20]
jne 0x776161
mov ecx, dword [esp + 0x44]
call fcn.00777510
mov edi, dword [esp + 0x18]
mov dword [esp + 0x28], eax
xor ecx, ecx
jmp 0x77619f
mov edi, dword [esp + 0x18]
test al, al
je 0x776192
mov esi, dword [esp + 0xc]
cmp al, 2
jne 0x776183
mov eax, dword [edi]
mov edx, dword [edi + 4]
xor ecx, ecx
mov dword [esp + 0x28], eax
lea eax, [edi + 8]
mov edi, eax
jmp 0x7761a3
mov eax, dword [edi]
add edi, 4
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x28], eax
jmp 0x7761a3
mov eax, dword [edi]
add edi, 4
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x28], eax
mov esi, dword [esp + 0xc]
mov eax, dword [esp + 4]
cmp byte [esp + 0x48], 0
mov dword [esp + 0x58], edx
mov dword [esp + 0x18], edi
jne 0x7761ba
mov edx, ecx
jmp 0x7761c9
cmp cl, 1
mov esi, esi
mov edx, ecx
adc esi, 0xffffffff
cmp eax, esi
cmovl eax, esi
cmp eax, 0x25
mov dword [esp + 4], eax
mov dword [esp + 0x3c], edx
jge 0x7761ec
mov dword [esp + 0x1c], 0
mov edi, 0x46
lea eax, [esp + 0x82]
jmp 0x77622c
mov ebx, eax
mov edi, eax
sar ebx, 0x1f
add edi, 0xa
adc ebx, 0
cmp byte [esp + 0x38], 0
je 0x77620e
mov ecx, 0xaaaaaaab
mul ecx
shr edx, 1
add edi, edx
adc ebx, 0
mov ecx, dword [ebp + 8]
mov edx, edi
push ebx
call fcn.00777540
add esp, 4
mov ebx, dword [esp + 8]
test eax, eax
je case.default.0x776068
mov dword [esp + 0x1c], eax
lea ecx, [eax + edi - 1]
cmp ebx, 0x16
mov dword [esp + 0x2c], ecx
jne 0x7763a4
mov esi, dword [esp + 0x5c]
movzx ecx, byte [0xbabaaf]
mov eax, esi
xor eax, fcn.007f17e0
sete al
xor al, 3
movzx eax, al
bt ecx, eax
jb 0x776350
mov al, byte [0xbabaaf]
mov ecx, esi
mov dl, 1
xor ecx, fcn.007f17e0
sete cl
or cl, 0xfc
add cl, 8
shl dl, cl
or dl, al
lock cmpxchg byte [0xbabaaf], dl
jne 0x776265
mov ecx, esi
movzx eax, al
xor ecx, fcn.007f17e0
sete cl
or cl, 0xfc
add cl, 8
movzx ecx, cl
bt eax, ecx
jae 0x7762c2
mov eax, esi
movzx ecx, byte [0xbabaaf]
xor eax, fcn.007f17e0
sete al
xor al, 3
movzx eax, al
bt ecx, eax
jae 0x7762a2
jmp 0x776350
mov eax, esi
movzx ecx, byte [0xbabaaf]
xor eax, fcn.007f17e0
sete al
xor al, 3
movzx eax, al
bt ecx, eax
jb 0x776336
mov eax, esi
xor ecx, ecx
xor eax, fcn.007f17e0
sete cl
xor ecx, 0xad076e7b
lea eax, [ecx + 0x100]
and cl, 3
xor eax, dword [0xbabaa0]
mov dword [0xbabaa0], eax
not eax
mov edx, dword [0xbabaa4]
imul eax, eax, 0xad076f7b
lea edi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbabaa4], edx
or eax, edi
not edx
imul edx, eax
xor dword [0xbabaa8], edx
mov dl, 1
shl dl, cl
or byte [0xbabaaf], dl
mov eax, esi
xor eax, fcn.007f17e0
mov al, 0xfe
sete cl
or cl, 0xfc
add cl, 8
rol al, cl
and byte [0xbabaaf], al
push 0
push 0xa
push dword [esp + 0x60]
mov edi, dword [esp + 0x34]
push edi
call fcn.00980470
lea ecx, [eax + eax]
lea ecx, [ecx + ecx*4]
sub edi, ecx
push 0
push 0xa
push edx
push eax
call fcn.00981f30
xor eax, 1
cmp edi, 3
lea ecx, [edi + edi]
mov esi, 0
cmova ecx, esi
or eax, edx
mov edx, dword [esp + 0x2c]
cmove ecx, esi
mov al, byte [ecx + str._atpr]
mov byte [edx - 1], al
mov al, byte [ecx + 0xbabaa0]
lea ecx, [edx - 2]
mov byte [edx - 2], al
lea eax, [ebx + ebx]
mov dword [esp + 0x10], ecx
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x58]
movzx ecx, byte [eax + eax*2 + 0xb4347b]
mov al, byte [eax + eax*2 + 0xb43478]
mov dword [esp + 0x30], ecx
mov byte [esp + 0x20], al
movzx ebx, byte [esp + 0x20]
push 0
push ebx
push edi
push esi
call fcn.00980470
mov ecx, eax
mov dword [esp + 0x48], edx
mov edx, ebx
imul ecx, ebx
mov ebx, esi
sub ebx, ecx
mov ecx, dword [esp + 0x30]
movzx ecx, byte [ecx + ebx + 0xbabab0]
mov ebx, dword [esp + 0x10]
mov byte [ebx - 1], cl
dec ebx
cmp esi, edx
mov esi, eax
sbb edi, 0
mov edi, dword [esp + 0x48]
mov dword [esp + 0x10], ebx
jae 0x7763ca
mov edi, dword [esp + 0x2c]
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 4]
mov eax, edi
sub eax, edx
cmp ecx, eax
jle 0x77643f
mov eax, ecx
mov esi, edi
sub eax, edi
sub esi, ecx
add eax, edx
push eax
push 0x30
push esi
call fcn.00980a60
mov eax, dword [esp + 0x10]
add esp, 0xc
mov dword [esp + 0x10], esi
cmp byte [esp + 0x38], 0
mov esi, dword [esp + 0x4c]
jne 0x776454
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x3c]
jmp 0x7764bd
dec eax
mov ecx, 0x55555556
mov ebx, eax
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
sub dword [esp + 0x10], ecx
cmp ebx, 3
jl 0x7764b1
mov eax, ebx
mov edx, 0xaaaaaaab
mov esi, ebx
mul edx
shr edx, 1
lea eax, [edx + edx*2]
neg eax
lea edx, [ebx + eax + 1]
xor eax, eax
mov edi, dword [esp + 0x10]
lea esi, [ecx + eax]
dec edx
movzx ebx, byte [edi + esi]
mov byte [edi + eax], bl
jne 0x7764a8
mov edx, dword [esp + 0x38]
dec ecx
mov esi, edi
mov byte [edi + eax + 1], dl
inc eax
mov edx, 3
mov esi, dword [esp + 0x4c]
inc eax
test ecx, ecx
jg 0x776486
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 0x2c]
test dl, dl
je 0x7764cd
mov eax, dword [esp + 0x10]
mov byte [eax - 1], dl
dec eax
mov dword [esp + 0x10], eax
cmp byte [esp + 0x50], 0
jne 0x7764da
mov edx, dword [esp + 0x10]
jmp 0x776523
mov eax, dword [esp + 0x58]
or dword [esp + 0x28], eax
jne 0x7764ea
mov edx, dword [esp + 0x10]
jmp 0x776523
mov eax, 0x77f2ff
bt eax, ecx
jae 0x7764fa
mov edx, dword [esp + 0x10]
jmp 0x776523
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x10]
movzx ecx, byte [eax + eax + 0xb4347c]
lea eax, [ecx + 0xb43501]
mov cl, byte [ecx + 0xb43501]
mov byte [edx - 1], cl
dec edx
movzx ecx, byte [eax + 1]
inc eax
test cl, cl
jne 0x776516
mov ecx, dword [esp + 0x1c]
sub edi, edx
mov dword [esp + 0x10], edx
mov edx, edi
jmp 0x7773e5
cmp byte [esp + 0x34], 0
mov dword [esp + 0x38], eax
mov dword [esp + 0x54], ecx
jne 0x77654e
mov ecx, dword [esp + 0x44]
call fcn.00777590
jmp 0x77655b
mov eax, dword [esp + 0x18]
fld qword [eax]
add eax, 8
mov dword [esp + 0x18], eax
mov edi, dword [esp + 4]
mov ecx, dword [esp + 0x3c]
mov eax, 6
fldz
test edi, edi
cmovs edi, eax
fucompi st(1)
fld st(0)
fchs
fxch st(1)
fcmovnbe st(0), st(1)
fstp st(1)
mov byte [esp + 0x20], 0x2d
ja 0x776588
mov eax, ecx
mov byte [esp + 0x20], cl
cmp ebx, 2
mov dword [esp + 4], edi
sete al
cmp ebx, 0xf
sete cl
or cl, al
test edi, edi
setg al
and al, cl
movzx eax, al
sub edi, eax
mov eax, edi
and eax, 0xfff
imul ecx, eax, 0xcccd
mov edx, eax
shr ecx, 0x13
add ecx, ecx
lea ecx, [ecx + ecx*4]
sub edx, ecx
cmp eax, 0xa
movzx ecx, dx
fld qword [ecx*8 + 0xb43508]
fxch st(1)
fst qword [esp + 0x78]
jb 0x7765e6
fxch st(1)
fmul qword [0xb43360]
add eax, 0xfffffff6
fxch st(1)
cmp eax, 9
jg 0x7765d4
mov ebx, dword [esp + 8]
cmp ebx, 0xc
jne 0x776631
fst qword [esp + 0x68]
mov ecx, 0x55555556
mov eax, dword [esp + 0x6c]
fld st(0)
fmul qword [0xb43368]
fadd st(2)
shr eax, 0x14
and eax, 0x7ff
add eax, 0xfffffc01
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
add eax, edi
cmp eax, 0xf
jl 0x776629
fstp st(0)
fldz
fxch st(2)
fstp st(2)
fadd st(1)
fst qword [esp + 0x78]
fxch st(1)
fstp qword [esp + 0x3c]
fst qword [esp + 0x10]
sub esp, 8
fstp qword [esp]
call fcn.007775c0
add esp, 8
test eax, eax
je 0x776661
mov dword [esp + 0x10], 0xbabad8
mov edx, 3
xor ecx, ecx
jmp 0x7773e5
fldz
xor edx, edx
fld qword [esp + 0x10]
fucomi st(1)
fstp st(1)
fld1
fld st(0)
fld qword [0xb43380]
fldz
ja 0x7766a8
fstp st(0)
fstp st(1)
fstp st(1)
fstp st(0)
cmp ebx, 0xc
jne 0x77679f
fstp st(0)
mov esi, edx
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 0x30]
mov byte [esp + 0x2c], al
lea edi, [esp + 0x82]
jmp 0x7767e5
fstp st(0)
fld st(1)
fxch st(2)
fmul qword [0xb43370]
mov eax, edx
cmp edx, 0x15e
jbe 0x7766c6
fstp st(0)
fldz
fxch st(2)
jmp 0x7766d3
fxch st(4)
fucomi st(4)
lea edx, [eax + 0x64]
fxch st(4)
fxch st(2)
jae 0x7766a8
fstp st(2)
fld st(1)
fxch st(2)
fmul dword [0xb43378]
mov ecx, eax
cmp eax, 0x15e
jbe 0x7766ee
fstp st(0)
fldz
jmp 0x7766f9
fxch st(4)
fucomi st(4)
lea eax, [ecx + 0xa]
fxch st(4)
jae 0x7766d3
fstp st(0)
fld st(1)
fxch st(2)
fmul dword [0xb4337c]
mov edx, ecx
cmp ecx, 0x15e
fxch st(2)
ja 0x77671c
fxch st(4)
fucomi st(2)
lea ecx, [edx + 1]
fxch st(4)
jae 0x7766f9
fstp st(2)
fxch st(3)
fdivrp st(1)
fst qword [esp + 0x78]
fxch st(2)
fucomi st(2)
jbe 0x77674d
fxch st(2)
fmul dword [0xb43388]
add edx, 0xfffffff8
fxch st(2)
fucomi st(2)
ja 0x77672c
fstp st(0)
fxch st(1)
fst qword [esp + 0x78]
fldz
fxch st(1)
fxch st(2)
fxch st(1)
fstp st(0)
fucomi st(1)
jbe 0x77676a
fxch st(1)
fmul dword [0xb4337c]
dec edx
fxch st(1)
fucomi st(1)
ja 0x776753
fstp st(0)
fst qword [esp + 0x78]
fldz
cmp edx, 0x15f
fstp st(0)
jl 0x776683
fstp st(0)
mov al, byte [esp + 0x20]
xor edx, edx
test al, al
mov byte [esp + 0x82], al
setne dl
mov dword [esp + edx + 0x82], 0x666e49
add edx, 3
jmp 0x776ad0
fld qword [esp + 0x3c]
faddp st(1)
fst qword [esp + 0x78]
fld dword [0xb4337c]
fxch st(1)
fucomi st(1)
fstp st(1)
jae 0x7767bb
fstp st(0)
jmp 0x7767c6
fmul qword [0xb43390]
inc edx
fstp qword [esp + 0x78]
mov esi, edx
mov edx, dword [esp + 0xc]
cmp ebx, 0xf
je 0x7767ef
cmp ebx, 2
je 0x7767ef
lea edi, [esp + 0x82]
mov eax, dword [esp + 0x30]
mov byte [esp + 0x2c], al
mov ebx, dword [esp + 4]
mov ecx, dword [esp + 0x38]
jmp 0x776823
cmp byte [esp + 0x50], 0
sete byte [esp + 0x2c]
cmp esi, 0xfffffffc
setl al
cmp edi, esi
setl cl
or cl, al
mov eax, esi
mov ebx, ecx
inc bl
test cl, cl
mov ecx, 0
cmovne eax, ecx
mov ecx, ebx
sub edi, eax
mov ebx, edi
lea edi, [esp + 0x82]
xor eax, eax
cmp cl, 2
mov dword [esp + 8], esi
mov dword [esp + 0x38], ecx
mov ecx, 0
mov dword [esp + 0x1c], 0
mov dword [esp + 4], ebx
mov dword [esp + 0x10], edi
cmove esi, eax
mov eax, edx
test esi, esi
mov dword [esp + 0x3c], esi
cmovns ecx, esi
mov esi, ebx
sar eax, 0x1f
sar esi, 0x1f
add edx, ebx
adc eax, esi
add edx, ecx
adc eax, 0
add edx, 0xf
adc eax, 0
cmp edx, 0x47
mov ecx, eax
sbb ecx, 0
jl 0x776890
mov ecx, dword [ebp + 8]
push eax
call fcn.00777540
add esp, 4
test eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], eax
je case.default.0x776068
mov ecx, dword [esp + 0x30]
cmp dword [esp + 4], 0
mov edx, dword [esp + 0x50]
movzx eax, cl
lea eax, [eax + eax*4]
lea eax, [eax + eax + 0x10]
mov dword [esp + 0x74], eax
setg al
or dl, cl
mov ah, byte [esp + 0x20]
mov ecx, dword [esp + 0x10]
test ah, ah
mov edi, ecx
je 0x7768c3
lea edi, [ecx + 1]
mov byte [ecx], ah
or dl, al
mov eax, dword [esp + 0x3c]
lea esi, [esp + 0x78]
mov dword [esp + 0x50], edx
test eax, eax
jns 0x7768db
mov byte [edi], 0x30
inc edi
jmp 0x7768f4
mov ecx, esi
lea edx, [esp + 0x74]
mov ebx, eax
call fcn.007775f0
mov byte [edi], al
mov eax, ebx
inc edi
test ebx, ebx
lea eax, [ebx - 1]
jg 0x7768db
cmp byte [esp + 0x50], 0
je 0x7768ff
mov byte [edi], 0x2e
inc edi
mov edx, dword [esp + 4]
mov ebx, eax
inc ebx
jns 0x776921
mov esi, eax
not eax
push eax
push 0x30
push edi
call fcn.00980a60
mov edx, dword [esp + 0x10]
add esp, 0xc
sub edi, esi
add edx, ebx
dec edi
lea ebx, [esp + 0x78]
test edx, edx
jle 0x77693e
mov esi, edx
mov ecx, ebx
lea edx, [esp + 0x74]
call fcn.007775f0
mov edx, esi
mov byte [edi], al
inc edi
dec edx
jg 0x776929
cmp byte [esp + 0x2c], 0
jne 0x77694f
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 8]
jmp 0x776985
cmp byte [esp + 0x50], 0
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 8]
je 0x776985
movzx ecx, byte [edi - 1]
lea eax, [edi - 1]
cmp cl, 0x30
je 0x7774b7
cmp cl, 0x2e
jne 0x776985
cmp byte [esp + 0x30], 0
je 0x776980
mov byte [edi], 0x30
inc edi
jmp 0x776985
mov edi, eax
mov byte [eax], 0
cmp byte [esp + 0x38], 2
jne 0x776a05
mov eax, dword [esp + 0x54]
test edx, edx
movzx eax, byte [eax + eax + 0xb4347b]
mov al, byte [eax + 0xbabab0]
mov byte [edi], al
jns 0x7769ac
mov byte [edi + 1], 0x2d
neg edx
jmp 0x7769b0
mov byte [edi + 1], 0x2b
cmp edx, 0x64
jge 0x7769ba
add edi, 2
jmp 0x7769da
mov eax, edx
mov ecx, 0x51eb851f
mov ebx, edx
mul ecx
shr edx, 5
mov ecx, edx
imul eax, edx, 0x64
mov edx, ebx
add cl, 0x30
sub edx, eax
mov byte [edi + 2], cl
add edi, 3
mov eax, edx
mov ecx, 0x66666667
mov ebx, edx
imul ecx
mov eax, edx
sar edx, 2
shr eax, 0x1f
add edx, eax
mov eax, edx
add edx, edx
lea ecx, [edx + edx*4]
add al, 0x30
sub ebx, ecx
mov byte [edi], al
add bl, 0x30
mov byte [edi + 1], bl
add edi, 2
mov edx, edi
mov ecx, dword [esp + 0x1c]
mov byte [edi], 0
sub edx, dword [esp + 0x10]
cmp byte [esp + 0x48], 0
je 0x7773e5
cmp byte [esp + 0x24], 0
jne 0x7773e5
mov ecx, dword [esp + 0xc]
mov eax, ecx
sub eax, edx
jg 0x776a3b
mov ecx, dword [esp + 0x1c]
jmp 0x7773e5
mov ebx, dword [esp + 0x10]
test edx, edx
js 0x776a53
mov edx, ecx
sub edx, eax
movzx edx, byte [ebx + edx]
mov byte [ebx + ecx], dl
lea ecx, [ecx - 1]
jg 0x776a43
test eax, eax
jne 0x776a64
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x1c]
jmp 0x7773e5
mov ecx, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
cmp byte [esp + 0x20], 1
mov eax, ecx
lea ecx, [ebx + ecx]
sbb eax, 0xffffffff
sub ecx, edi
push ecx
push 0x30
push eax
call fcn.00980a60
add esp, 0xc
mov ecx, dword [esp + 0x1c]
mov edx, ebx
jmp 0x7773e5
xor ecx, ecx
cmp byte [esp + 0x34], 0
jne 0x776aaa
mov dword [esp + 0xc], 0
xor edx, edx
jmp 0x7773e5
mov ebx, dword [ebp + 8]
mov edx, dword [esp + 0x18]
mov ecx, dword [edx]
mov eax, dword [ebx + 0x10]
add edx, 4
mov dword [esp + 0x18], edx
mov dword [ecx], eax
xor ecx, ecx
jmp 0x776a9b
mov edx, 1
mov byte [esp + 0x82], 0x25
lea eax, [esp + 0x82]
xor ecx, ecx
mov dword [esp + 0x10], eax
jmp 0x7773e5
cmp byte [esp + 0x34], 0
jne 0x776b4e
mov ecx, dword [esp + 0x44]
call fcn.00777640
test eax, eax
je 0x776b44
mov cl, byte [eax]
cmp cl, 0xc0
mov byte [esp + 0x82], cl
jae 0x776b18
mov edi, 1
mov ebx, dword [ebp + 8]
lea edx, [esp + 0x82]
jmp 0x776c1d
mov cl, byte [eax + 1]
mov edx, ecx
and dl, 0xc0
cmp dl, 0x80
jne 0x776b04
mov byte [esp + 0x83], cl
mov cl, byte [eax + 2]
mov edx, ecx
and dl, 0xc0
cmp dl, 0x80
je 0x777484
mov edi, 2
jmp 0x776b09
mov byte [esp + 0x82], 0
jmp 0x776b04
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x18], ecx
cmp eax, 0x7f
ja 0x776b69
mov byte [esp + 0x82], al
jmp 0x776b04
mov ebx, dword [ebp + 8]
cmp eax, 0x7ff
lea edx, [esp + 0x82]
mov ecx, eax
ja 0x776b9e
shr ecx, 6
and al, 0x3f
mov edi, 2
and cl, 0x1f
or al, 0x80
or cl, 0xc0
mov byte [esp + 0x82], cl
mov byte [esp + 0x83], al
jmp 0x776c1d
cmp eax, 0xffff
ja 0x776bd9
shr ecx, 0xc
mov edi, 3
and cl, 0xf
or cl, 0xe0
mov byte [esp + 0x82], cl
mov ecx, eax
and al, 0x3f
shr ecx, 6
or al, 0x80
and cl, 0x3f
or cl, 0x80
mov byte [esp + 0x83], cl
mov byte [esp + 0x84], al
jmp 0x776c1d
shr ecx, 0x12
and cl, 7
or cl, 0xf0
mov byte [esp + 0x82], cl
mov ecx, eax
shr ecx, 0xc
and cl, 0x3f
or cl, 0x80
mov byte [esp + 0x83], cl
mov ecx, eax
and al, 0x3f
shr ecx, 6
or al, 0x80
and cl, 0x3f
or cl, 0x80
mov byte [esp + 0x84], cl
mov byte [esp + 0x85], al
mov edi, 4
mov al, 1
mov dword [esp + 0x30], eax
mov eax, dword [esp + 4]
cmp eax, 2
jge 0x776c46
xor ecx, ecx
mov eax, edi
mov dword [esp + 0x10], edx
cmp byte [esp + 0x30], 0
jne 0x776df0
mov edx, eax
jmp 0x7773e5
mov ecx, 1
sub ecx, eax
add ecx, dword [esp + 0xc]
cmp ecx, 2
jge 0x776c5c
mov dword [esp + 0x10], ecx
jmp 0x776c82
cmp byte [esp + 0x24], 0
je 0x776c69
mov dword [esp + 0x10], ecx
jmp 0x776c82
dec ecx
push 0x20
push ecx
push ebx
call fcn.00777670
mov eax, dword [esp + 0x10]
add esp, 0xc
mov dword [esp + 0x10], 0
mov ebx, edi
dec eax
push ebx
lea ecx, [esp + 0x86]
push ecx
push dword [ebp + 8]
mov edi, eax
call fcn.007774d0
mov eax, edi
add esp, 0xc
cmp edi, 1
jg 0x776c84
mov eax, dword [esp + 0x10]
xor ecx, ecx
mov dword [esp + 0xc], eax
lea eax, [esp + 0x82]
mov dword [esp + 0x10], eax
mov eax, ebx
jmp 0x776c34
cmp byte [esp + 0x34], 0
jne 0x776cd6
mov ecx, dword [esp + 0x44]
call fcn.00777640
mov edi, dword [esp + 0x18]
mov cl, 5
jmp 0x776ce1
mov edi, dword [esp + 0x18]
mov ecx, eax
mov eax, dword [edi]
add edi, 4
mov ebx, dword [ebp + 8]
mov edx, dword [esp + 4]
test eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x18], edi
jne 0x776d41
mov dword [esp + 0x10], 0xc1f080
xor edi, edi
test edx, edx
js 0x776d80
cmp byte [esp + 0x30], 0
je 0x776dc9
mov eax, dword [esp + 0x10]
test edx, edx
je 0x776d36
mov cl, byte [eax]
test cl, cl
je 0x776d36
inc eax
dec edx
cmp cl, 0xc0
mov ebx, eax
jb 0x776d32
movzx ecx, byte [ebx]
mov eax, ebx
inc ebx
and cl, 0xc0
cmp cl, 0x80
je 0x776d24
test edx, edx
jg 0x776d15
sub eax, dword [esp + 0x10]
mov ecx, edi
jmp 0x776c34
cmp cl, 6
jne 0x776cfc
cmp dword [ebx + 0x10], 0
je 0x776d52
mov edi, dword [esp + 0x10]
jmp 0x776cfe
test edx, edx
js 0x776d5c
mov edi, dword [esp + 0x10]
jmp 0x776cfe
cmp dword [esp + 0xc], 0
je 0x776d69
mov edi, dword [esp + 0x10]
jmp 0x776cfe
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0x776d76
mov edi, dword [esp + 0x10]
jmp 0x776cfe
cmp byte [ebx + 0x14], 0
je 0x776d98
mov edi, dword [esp + 0x10]
push dword [esp + 0x10]
call fcn.00980650
add esp, 4
and eax, 0x7fffffff
mov ecx, edi
jmp 0x776c34
mov edi, ebx
mov ebx, dword [esp + 0x10]
mov dword [edi + 4], ebx
mov edx, ebx
mov ecx, dword [edi]
call fcn.007776c0
mov dword [edi + 8], eax
push ebx
call fcn.00980650
add esp, 4
and eax, 0x7fffffff
xor ecx, ecx
mov dword [edi + 0x10], eax
or byte [edi + 0x15], 4
jmp 0x776a9b
xor ebx, ebx
test edx, edx
jne 0x776ddd
mov ecx, edi
xor edx, edx
jmp 0x7773e5
inc ebx
cmp ebx, edx
jge 0x776de7
mov eax, dword [esp + 0x10]
cmp byte [eax + ebx], 0
jne 0x776dd8
mov ecx, edi
mov edx, ebx
jmp 0x7773e5
cmp dword [esp + 0xc], 0
jg 0x776dfe
mov edx, eax
jmp 0x7773e5
mov ebx, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
test eax, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x2c], eax
jg 0x776e1f
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
jmp 0x7773e5
movzx ecx, byte [edi + eax - 1]
dec eax
xor edx, edx
and cl, 0xc0
cmp cl, 0x80
sete dl
add ebx, edx
test eax, eax
jg 0x776e1f
mov dword [esp + 0xc], ebx
jmp 0x776e12
cmp ebx, 6
mov byte [esp + 0x20], 0x22
je 0x776e4b
mov byte [esp + 0x20], 0x27
cmp byte [esp + 0x34], 0
jne 0x776e61
mov ecx, dword [esp + 0x44]
call fcn.00777640
mov dword [esp + 0x3c], eax
jmp 0x776e72
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x18], eax
mov dword [esp + 0x3c], ecx
mov edi, 0x77a590
xor eax, eax
mov edx, dword [esp + 4]
imul edi, edi
and edi, 3
cmp edi, 2
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
movzx ecx, byte [0xbabaef]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x776fa5
mov al, byte [0xbabaef]
xor ecx, ecx
cmp edi, 2
sete cl
mov edx, ecx
not edx
lea ecx, [ecx + edx*2 + 4]
mov dl, 1
and cl, 7
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbabaef], dl
jne 0x776eab
xor ecx, ecx
cmp edi, 2
movzx eax, al
sete cl
mov edx, ecx
not edx
lea ecx, [ecx + edx*2 + 4]
mov edx, dword [esp + 4]
and cl, 7
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x776f1c
xor eax, eax
cmp edi, 2
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
movzx ecx, byte [0xbabaef]
and al, 7
movzx eax, al
bt ecx, eax
jae 0x776ef6
jmp 0x776fa5
xor eax, eax
cmp edi, 2
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
movzx ecx, byte [0xbabaef]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x776f85
xor eax, eax
cmp edi, 2
sete al
mov ecx, eax
not ecx
and ecx, 0x93
lea ecx, [eax + ecx*2 - 0xb58b89c]
mov eax, dword [0xbabae4]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbabae4], eax
not eax
imul edx, eax
mov ah, 1
xor dword [str.eCHD_t2UP], edx
mov edx, dword [esp + 4]
shl ah, cl
or byte [0xbabaef], ah
xor eax, eax
cmp edi, 2
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 [0xbabaef], al
mov edi, dword [esp + 0x60]
xor eax, eax
mov ecx, edi
xor ecx, 0x7a3b50
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbabafb]
bt ecx, eax
jb 0x7770d6
mov al, byte [0xbabafb]
mov edx, edi
xor ecx, ecx
xor edx, 0x7a3b50
sete cl
mov edx, ecx
xor edx, 3
lea ecx, [edx + ecx*2]
mov dl, 1
xor cl, 7
shl dl, cl
or dl, al
lock cmpxchg byte [0xbabafb], dl
jne 0x776fd3
mov edx, edi
xor ecx, ecx
movzx eax, al
xor edx, 0x7a3b50
sete cl
mov edx, ecx
xor edx, 3
lea ecx, [edx + ecx*2]
mov edx, dword [esp + 4]
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x777048
mov ecx, edi
xor eax, eax
xor ecx, 0x7a3b50
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbabafb]
bt ecx, eax
jae 0x777022
jmp 0x7770d6
mov ecx, edi
xor eax, eax
xor ecx, 0x7a3b50
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbabafb]
bt ecx, eax
jb 0x7770b4
mov ecx, edi
xor eax, eax
xor ecx, 0x7a3b50
sete al
mov ecx, eax
xor ecx, 0x802d4e23
lea ecx, [ecx + eax*2 + 0x218]
mov eax, dword [0xbabaf0]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbabaf0], eax
not eax
imul edx, eax
mov ah, 1
xor dword [0xbabaf4], edx
mov edx, dword [esp + 4]
shl ah, cl
or byte [0xbabafb], ah
mov ecx, edi
xor eax, eax
xor ecx, 0x7a3b50
sete al
mov ecx, eax
xor ecx, 3
lea ecx, [ecx + eax*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbabafb], al
cmp ebx, 5
mov ecx, 0xbabaf0
mov eax, 0xbabae4
mov edi, 0
mov dword [esp + 0x1c], 0
cmove ecx, eax
mov eax, dword [esp + 0x3c]
test eax, eax
cmovne ecx, eax
test edx, edx
mov eax, 0
mov dword [esp + 0x48], ecx
je 0x777163
movzx eax, byte [esp + 0x20]
xor edi, edi
mov dword [esp + 0x10], eax
xor eax, eax
movsx ebx, byte [ecx + edi]
test ebx, ebx
je 0x777163
mov dword [esp + 4], edx
xor edx, edx
cmp ebx, dword [esp + 0x10]
sete dl
cmp byte [esp + 0x30], 0
je 0x7774c1
and ebx, 0xc0
cmp ebx, 0xc0
jne 0x7774c1
mov ecx, dword [esp + 0x48]
movzx ebx, byte [ecx + edi + 1]
inc edi
and bl, 0xc0
cmp bl, 0x80
je 0x77714c
add eax, edx
mov edx, dword [esp + 4]
dec edx
jne 0x777116
cmp dword [esp + 8], 5
lea edx, [edi + eax + 3]
lea eax, [esp + 0x82]
mov dword [esp + 0x10], eax
sete ch
cmp dword [esp + 0x3c], 0
setne bl
cmp edx, 0x47
jl 0x7771ac
mov bh, ch
mov ecx, dword [ebp + 8]
mov eax, edx
sar eax, 0x1f
push eax
call fcn.00777540
mov ch, bh
add esp, 4
test eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], eax
je case.default.0x776068
xor eax, eax
and ch, bl
je 0x7771c1
mov eax, dword [esp + 0x10]
mov cl, byte [esp + 0x20]
mov byte [eax], cl
mov eax, 1
test edi, edi
mov byte [esp + 4], ch
jle 0x7771f8
movzx ecx, byte [esp + 0x20]
mov dword [esp + 8], ecx
xor ecx, ecx
mov edx, dword [esp + 0x48]
mov ebx, dword [esp + 0x10]
movsx edx, byte [edx + ecx]
cmp edx, dword [esp + 8]
mov byte [ebx + eax], dl
je 0x7771ec
inc eax
jmp 0x7771f3
mov byte [ebx + eax + 1], dl
add eax, 2
inc ecx
cmp ecx, edi
jne 0x7771d4
cmp byte [esp + 4], 0
jne 0x777205
mov ecx, dword [esp + 0x10]
jmp 0x777211
mov ecx, dword [esp + 0x10]
mov dl, byte [esp + 0x20]
mov byte [ecx + eax], dl
inc eax
mov byte [ecx + eax], 0
mov ecx, dword [esp + 0x1c]
jmp 0x776c34
mov eax, dword [ebp + 8]
test byte [eax + 0x15], 1
je case.default.0x776068
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x18], ecx
test eax, eax
jne 0x777243
xor ecx, ecx
jmp 0x776a9b
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x77723c
push ecx
push dword [eax]
mov ebx, dword [ebp + 8]
push ebx
call fcn.007774d0
add esp, 0xc
xor ecx, ecx
jmp 0x776a9b
mov eax, dword [ebp + 8]
test byte [eax + 0x15], 1
je case.default.0x776068
mov eax, dword [esp + 0x18]
mov edi, dword [eax]
mov eax, dword [eax + 4]
lea esi, [eax + eax*8]
mov ebx, dword [edi + esi*8 + 0xc]
test ebx, ebx
je 0x7773c0
mov edx, fcn.007bd360
mov eax, fcn.007bd360
and edx, 1
xor edx, eax
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
movzx ecx, byte [0xbabb03]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7773a1
mov al, byte [0xbabb03]
mov dword [esp + 8], ebx
xor ebx, ebx
cmp edx, 0xffffffff
mov ah, 1
sete bl
mov ecx, ebx
xor ecx, 5
lea ecx, [ecx + ebx*2 + 4]
and cl, 7
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbabb03], ah
jne 0x7772c3
xor ecx, ecx
cmp edx, 0xffffffff
movzx eax, al
sete cl
mov ebx, ecx
xor ebx, 5
lea ecx, [ebx + ecx*2 + 4]
mov ebx, dword [esp + 8]
and cl, 7
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x777334
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
movzx ecx, byte [0xbabb03]
and al, 7
movzx eax, al
bt ecx, eax
jae 0x777310
jmp 0x7773a1
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
movzx ecx, byte [0xbabb03]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x777380
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 0xe49194e5
lea ecx, [ecx + eax*2 + 0x1234]
mov al, 1
xor dword [0xbabafc], ecx
and cl, 7
shl al, cl
or byte [0xbabb03], al
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 5
lea ecx, [ecx + eax*2 + 4]
mov al, 0xfe
and cl, 7
xor cl, 7
rol al, cl
and byte [0xbabb03], al
push ebx
mov eax, dword [ebp + 8]
mov ebx, eax
push eax
call fcn.00777700
add esp, 8
push 1
push 0xbabafc
push ebx
call fcn.007774d0
add esp, 0xc
add dword [esp + 0x18], 8
push dword [edi + esi*8 + 0x10]
mov esi, dword [ebp + 8]
push esi
call fcn.00777700
add esp, 8
mov esi, dword [esp + 0x4c]
xor ecx, ecx
xor edx, edx
mov dword [esp + 0xc], 0
mov ebx, dword [esp + 0xc]
sub ebx, edx
jle 0x77743b
cmp byte [esp + 0x24], 0
mov edi, edx
mov dword [esp + 0x1c], ecx
jne 0x77741d
push 0x20
push ebx
mov ebx, dword [ebp + 8]
push ebx
call fcn.00777670
add esp, 0xc
push edi
push dword [esp + 0x14]
push ebx
call fcn.007774d0
add esp, 0xc
mov edx, dword [esp + 0x1c]
jmp 0x777450
push edi
push dword [esp + 0x14]
mov edi, dword [ebp + 8]
push edi
call fcn.007774d0
add esp, 0xc
push 0x20
push ebx
mov ebx, edi
push edi
call fcn.00777670
jmp 0x777414
push edx
push dword [esp + 0x14]
mov ebx, dword [ebp + 8]
push ebx
mov edi, ecx
call fcn.007774d0
mov edx, edi
add esp, 0xc
test edx, edx
je 0x77745b
mov ecx, dword [ebx]
call fcn.00774f10
mov edi, dword [esp + 0x64]
inc esi
jmp 0x775919
cmp ebx, 0x53
mov dword [esp + 8], 0x15
je case.0x775c0b.100
cmp ebx, 0x72
je 0x775e3b
jmp case.default.0x776068
mov byte [esp + 0x84], cl
mov ebx, dword [ebp + 8]
mov edi, 3
lea edx, [esp + 0x82]
mov al, byte [eax + 3]
mov ecx, eax
and cl, 0xc0
cmp cl, 0x80
jne 0x776c1d
mov byte [esp + 0x85], al
jmp 0x776c18
mov byte [eax], 0
mov edi, eax
jmp 0x77695e
mov ecx, dword [esp + 0x48]
inc edi
jmp 0x77715a