Function at 0x781190
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 [0xbd33e0]
mov esi, dword [ebp + 8]
mov ecx, dword [ebp + 0x10]
xor eax, ebp
mov dword [esp + 0xc8], eax
test byte [esi + 0x15], 2
jne 0x7811cd
mov al, 1
mov dword [esp + 0x18], ecx
mov dword [esp + 0x44], 0
mov dword [esp + 0x34], eax
jmp 0x7811e2
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.007fd060
mov ecx, 3
mov esi, dword [ebp + 0xc]
mov edi, 0x845a20
mov dword [esp + 0x10], 0
sub ecx, eax
imul edi, edi
mov dword [esp + 0x5c], ecx
mov ecx, 0x7af450
and edi, 3
and ecx, 1
mov dword [esp + 0x64], edi
inc ecx
mov dword [esp + 0x60], ecx
cmp edi, 2
movzx ecx, byte [0xbb3443]
sete al
xor al, 5
movzx eax, al
bt ecx, eax
jb 0x7812f1
mov al, byte [0xbb3443]
cmp edi, 2
mov dl, 1
sete cl
or cl, 0xfa
add cl, 8
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb3443], dl
jne 0x781239
cmp edi, 2
movzx eax, al
sete cl
or cl, 0xfa
add cl, 8
movzx ecx, cl
bt eax, ecx
jae 0x781285
cmp edi, 2
movzx ecx, byte [0xbb3443]
sete al
xor al, 5
movzx eax, al
bt ecx, eax
jae 0x78126c
jmp 0x7812f1
cmp edi, 2
movzx ecx, byte [0xbb3443]
sete al
xor al, 5
movzx eax, al
bt ecx, eax
jb 0x7812db
xor ecx, ecx
cmp edi, 2
mov eax, dword [0xbb3438]
sete cl
xor ecx, 0xe3faf31d
add ecx, 0x900
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbb3438], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
xor dword [0xbb343c], edx
mov dl, 1
shl dl, cl
or byte [0xbb3443], dl
cmp edi, 2
mov al, 0xfe
sete cl
or cl, 0xfa
add cl, 8
rol al, cl
and byte [0xbb3443], al
mov al, byte [esi]
cmp al, 0x25
jne 0x7812fb
mov edi, esi
jmp 0x781330
test al, al
mov edi, esi
je case.default.0x781968
movzx eax, byte [edi + 1]
inc edi
cmp al, 0x25
je 0x781312
test al, al
jne 0x781305
mov eax, edi
sub eax, esi
push eax
push esi
push dword [ebp + 8]
call fcn.00782dd0
add esp, 0xc
cmp byte [edi], 0
mov dword [esp + 0x10], esi
je case.default.0x781968
mov al, byte [edi + 1]
test al, al
je 0x78139c
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.0x781395.34
mov cl, 1
jmp dword [edi*4 + 0xb5798c]
mov edx, fcn.007ab130
movzx ecx, byte [0xbb33ff]
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 0x78148b
mov al, byte [0xbb33ff]
cmp edx, 1
mov ah, 1
seta cl
or cl, 2
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbb33ff], ah
jne 0x7813ca
mov ecx, fcn.007ab130
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 0x781421
cmp ecx, 1
movzx edx, byte [0xbb33ff]
seta al
or al, 2
movzx eax, al
bt edx, eax
jae 0x781408
jmp 0x78148b
cmp ecx, 1
movzx edx, byte [0xbb33ff]
seta al
or al, 2
movzx eax, al
bt edx, eax
jb 0x78146a
mov eax, fcn.007ab130
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 [0xbb33f8], ecx
and cl, 7
shl al, cl
or byte [0xbb33ff], al
mov eax, fcn.007ab130
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 [0xbb33ff], al
push 1
push 0xbb33f8
push esi
call fcn.00782dd0
add esp, 0xc
jmp case.default.0x781968
mov al, 0x2b
mov dword [esp + 0x3c], eax
jmp 0x7815a6
mov al, 0x20
mov dword [esp + 0x3c], eax
jmp 0x7815a6
mov al, 1
mov dword [esp + 0x50], eax
jmp 0x7815a6
mov al, 1
mov dword [esp + 0x30], eax
jmp 0x7815a6
mov al, 1
mov dword [esp + 0x48], eax
jmp 0x7815a6
mov al, 0x2c
mov dword [esp + 0x38], eax
jmp 0x7815a6
mov al, byte [esi + 1]
cmp al, 0x6c
je 0x7814ee
inc esi
mov cl, 1
jmp 0x7814f6
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.0x78150b.38
jmp dword [ecx*4 + 0xb57ac0]
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 0x781541
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 0x781528
and ebx, 0x7fffffff
cmp dl, 0x2e
mov dword [esp + 0xc], ebx
je 0x7815a6
cmp dl, 0x6c
je 0x7815a6
xor eax, eax
mov ebx, edi
mov esi, ecx
jmp case.0x781395.34
cmp byte [esp + 0x34], 0
jne 0x78156f
mov ecx, dword [esp + 0x44]
call fcn.00782e10
jmp 0x78157c
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x18], ecx
test eax, eax
jns 0x781599
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 0x7815d2
mov eax, dword [esp + 0x24]
mov ecx, eax
mov al, byte [esi + 1]
inc esi
mov dword [esp + 0x24], ecx
test al, al
jne 0x78137a
mov ecx, dword [esp + 0xc8]
xor ecx, ebp
call fcn.00989fe9
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
cmp bl, 0x6c
je 0x7815a6
inc esi
xor eax, eax
jmp case.0x781395.34
movsx ebx, byte [esi + 1]
cmp ebx, 0x2a
je 0x78160f
mov ecx, ebx
inc esi
xor eax, eax
add cl, 0xd0
jmp 0x781603
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 0x7815f2
and eax, 0x7fffffff
jmp 0x78164c
cmp byte [esp + 0x34], 0
jne 0x781621
mov ecx, dword [esp + 0x44]
call fcn.00782e10
jmp 0x78162e
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x18], ecx
test eax, eax
jns 0x781645
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 0x7815d8
dec esi
jmp 0x7815a6
mov dword [esp + 8], 1
jmp case.0x78150b.100
mov dword [esp + 8], 2
jmp case.0x78150b.100
mov dword [esp + 8], 3
jmp case.0x78150b.100
mov dword [esp + 8], 4
jmp case.0x78150b.100
mov dword [esp + 8], 5
jmp case.0x78150b.100
mov dword [esp + 8], 6
jmp case.0x78150b.100
mov dword [esp + 8], 7
jmp case.0x78150b.100
mov dword [esp + 8], 8
jmp case.0x78150b.100
mov dword [esp + 8], 9
jmp case.0x78150b.100
mov dword [esp + 8], 0xa
jmp case.0x78150b.100
mov dword [esp + 8], 0xb
jmp case.0x78150b.100
mov dword [esp + 8], 0xc
jmp case.0x78150b.100
mov dword [esp + 8], 0xd
jmp case.0x78150b.100
mov dword [esp + 8], 0xe
jmp case.0x78150b.100
mov dword [esp + 8], 0xf
jmp case.0x78150b.100
mov dword [esp + 8], 0x10
jmp case.0x78150b.100
mov dword [esp + 8], 0x11
jmp case.0x78150b.100
mov dword [esp + 8], 0x12
jmp case.0x78150b.100
mov dword [esp + 8], 0x13
jmp case.0x78150b.100
mov dword [esp + 8], 0x14
jmp case.0x78150b.100
mov dword [esp + 8], 0x16
mov edx, fcn.0081fda0
mov edi, fcn.0081fda0
xor eax, eax
movzx ebx, byte [0xbb3437]
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 0x78194c
mov al, byte [0xbb3437]
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 [0xbb3437], ah
jne 0x78177f
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 0x7817f4
mov ecx, edx
xor eax, eax
movzx edi, byte [0xbb3437]
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 0x7817cc
jmp 0x78194c
mov ecx, edx
xor eax, eax
movzx edi, byte [0xbb3437]
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 0x78192c
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 [0xbb3410]
mov edi, ecx
xor eax, ecx
mov dword [0xbb3410], eax
not eax
mov ebx, dword [0xbb3414]
imul eax, ecx
lea ecx, [eax + eax]
xor ebx, eax
shr eax, 0x1e
mov dword [0xbb3414], ebx
or ecx, eax
not ebx
mov eax, dword [0xbb3418]
imul ebx, ecx
lea ecx, [ebx*4]
xor eax, ebx
shr ebx, 0x1d
mov dword [0xbb3418], eax
or ecx, ebx
not eax
imul eax, ecx
mov ecx, dword [0xbb341c]
lea ebx, [eax*8]
xor ecx, eax
shr eax, 0x1c
mov dword [0xbb341c], ecx
or ebx, eax
not ecx
mov eax, dword [0xbb3420]
imul ecx, ebx
mov ebx, ecx
shl ebx, 4
xor eax, ecx
shr ecx, 0x1b
mov dword [0xbb3420], eax
or ecx, ebx
not eax
imul eax, ecx
mov ecx, dword [0xbb3424]
mov ebx, eax
shl ebx, 5
xor ecx, eax
shr eax, 0x1a
mov dword [0xbb3424], ecx
or eax, ebx
not ecx
imul ecx, eax
mov eax, dword [0xbb3428]
mov ebx, ecx
shl ebx, 6
xor eax, ecx
shr ecx, 0x19
mov dword [0xbb3428], eax
or ecx, ebx
not eax
imul eax, ecx
mov ecx, dword [0xbb342c]
mov ebx, eax
shl ebx, 7
xor ecx, eax
shr eax, 0x18
or eax, ebx
mov dword [0xbb342c], ecx
not ecx
mov ebx, dword [esp + 0x4c]
imul ecx, eax
mov al, 1
xor dword [0xbb3430], ecx
mov ecx, edi
and cl, 7
shl al, cl
or byte [0xbb3437], 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 [0xbb3437], al
mov ebx, dword [esp + 8]
lea ecx, [ebx + ebx*2]
movzx eax, byte [ecx + ecx + 0xb4bada]
cmp eax, 0x10
ja case.default.0x781968
mov dword [esp + 0x4c], esi
jmp dword [eax*4 + 0xb57c18]
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 0x781a41
cmp byte [esp + 0x34], 0
mov eax, dword [esp + 0x20]
jne 0x7819ad
mov ecx, dword [esp + 0x44]
call fcn.00782e10
mov edi, dword [esp + 0x18]
mov dword [esp + 0x28], eax
jmp 0x7819eb
mov edi, dword [esp + 0x18]
test al, al
je 0x7819dd
mov esi, dword [esp + 0xc]
cmp al, 2
jne 0x7819cd
mov eax, dword [edi]
mov edx, dword [edi + 4]
lea ecx, [edi + 8]
mov edi, ecx
mov dword [esp + 0x28], eax
jmp 0x7819ef
mov eax, dword [edi]
add edi, 4
mov edx, eax
mov dword [esp + 0x28], eax
sar edx, 0x1f
jmp 0x7819ef
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 0x781aa7
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 0x781aa3
cmp byte [esp + 0x34], 0
mov eax, dword [esp + 0x20]
jne 0x781a61
mov ecx, dword [esp + 0x44]
call fcn.00782e10
mov edi, dword [esp + 0x18]
mov dword [esp + 0x28], eax
xor ecx, ecx
jmp 0x781a9f
mov edi, dword [esp + 0x18]
test al, al
je 0x781a92
mov esi, dword [esp + 0xc]
cmp al, 2
jne 0x781a83
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 0x781aa3
mov eax, dword [edi]
add edi, 4
xor ecx, ecx
xor edx, edx
mov dword [esp + 0x28], eax
jmp 0x781aa3
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 0x781aba
mov edx, ecx
jmp 0x781ac9
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 0x781aec
mov dword [esp + 0x1c], 0
mov edi, 0x46
lea eax, [esp + 0x82]
jmp 0x781b2c
mov ebx, eax
mov edi, eax
sar ebx, 0x1f
add edi, 0xa
adc ebx, 0
cmp byte [esp + 0x38], 0
je 0x781b0e
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.00782e40
add esp, 4
mov ebx, dword [esp + 8]
test eax, eax
je case.default.0x781968
mov dword [esp + 0x1c], eax
lea ecx, [eax + edi - 1]
cmp ebx, 0x16
mov dword [esp + 0x2c], ecx
jne 0x781ca4
mov esi, dword [esp + 0x5c]
movzx ecx, byte [0xbb340f]
mov eax, esi
xor eax, fcn.007fd060
sete al
xor al, 3
movzx eax, al
bt ecx, eax
jb 0x781c50
mov al, byte [0xbb340f]
mov ecx, esi
mov dl, 1
xor ecx, fcn.007fd060
sete cl
or cl, 0xfc
add cl, 8
shl dl, cl
or dl, al
lock cmpxchg byte [0xbb340f], dl
jne 0x781b65
mov ecx, esi
movzx eax, al
xor ecx, fcn.007fd060
sete cl
or cl, 0xfc
add cl, 8
movzx ecx, cl
bt eax, ecx
jae 0x781bc2
mov eax, esi
movzx ecx, byte [0xbb340f]
xor eax, fcn.007fd060
sete al
xor al, 3
movzx eax, al
bt ecx, eax
jae 0x781ba2
jmp 0x781c50
mov eax, esi
movzx ecx, byte [0xbb340f]
xor eax, fcn.007fd060
sete al
xor al, 3
movzx eax, al
bt ecx, eax
jb 0x781c36
mov eax, esi
xor ecx, ecx
xor eax, fcn.007fd060
sete cl
xor ecx, 0xad076e7b
lea eax, [ecx + 0x100]
and cl, 3
xor eax, dword [0xbb3400]
mov dword [0xbb3400], eax
not eax
mov edx, dword [0xbb3404]
imul eax, eax, 0xad076f7b
lea edi, [eax + eax]
xor edx, eax
shr eax, 0x1e
mov dword [0xbb3404], edx
or eax, edi
not edx
imul edx, eax
xor dword [0xbb3408], edx
mov dl, 1
shl dl, cl
or byte [0xbb340f], dl
mov eax, esi
xor eax, fcn.007fd060
mov al, 0xfe
sete cl
or cl, 0xfc
add cl, 8
rol al, cl
and byte [0xbb340f], al
push 0
push 0xa
push dword [esp + 0x60]
mov edi, dword [esp + 0x34]
push edi
call fcn.0098a000
lea ecx, [eax + eax]
lea ecx, [ecx + ecx*4]
sub edi, ecx
push 0
push 0xa
push edx
push eax
call fcn.0098bac0
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 + 0xbb3400]
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 + 0xb4badb]
mov al, byte [eax + eax*2 + 0xb4bad8]
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.0098a000
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 + 0xbb3410]
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 0x781cca
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 0x781d3f
mov eax, ecx
mov esi, edi
sub eax, edi
sub esi, ecx
add eax, edx
push eax
push 0x30
push esi
call fcn.0098a5f0
mov eax, dword [esp + 0x10]
add esp, 0xc
mov dword [esp + 0x10], esi
cmp byte [esp + 0x38], 0
mov esi, dword [esp + 0x4c]
jne 0x781d54
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x3c]
jmp 0x781dbd
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 0x781db1
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 0x781da8
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 0x781d86
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x3c]
mov edi, dword [esp + 0x2c]
test dl, dl
je 0x781dcd
mov eax, dword [esp + 0x10]
mov byte [eax - 1], dl
dec eax
mov dword [esp + 0x10], eax
cmp byte [esp + 0x50], 0
jne 0x781dda
mov edx, dword [esp + 0x10]
jmp 0x781e23
mov eax, dword [esp + 0x58]
or dword [esp + 0x28], eax
jne 0x781dea
mov edx, dword [esp + 0x10]
jmp 0x781e23
mov eax, 0x77f2ff
bt eax, ecx
jae 0x781dfa
mov edx, dword [esp + 0x10]
jmp 0x781e23
mov eax, dword [esp + 0x54]
mov edx, dword [esp + 0x10]
movzx ecx, byte [eax + eax + 0xb4badc]
lea eax, [ecx + 0xb4bb61]
mov cl, byte [ecx + 0xb4bb61]
mov byte [edx - 1], cl
dec edx
movzx ecx, byte [eax + 1]
inc eax
test cl, cl
jne 0x781e16
mov ecx, dword [esp + 0x1c]
sub edi, edx
mov dword [esp + 0x10], edx
mov edx, edi
jmp 0x782ce5
cmp byte [esp + 0x34], 0
mov dword [esp + 0x38], eax
mov dword [esp + 0x54], ecx
jne 0x781e4e
mov ecx, dword [esp + 0x44]
call fcn.00782e90
jmp 0x781e5b
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 0x781e88
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 + 0xb4bb68]
fxch st(1)
fst qword [esp + 0x78]
jb 0x781ee6
fxch st(1)
fmul qword [0xb4b9b8]
add eax, 0xfffffff6
fxch st(1)
cmp eax, 9
jg 0x781ed4
mov ebx, dword [esp + 8]
cmp ebx, 0xc
jne 0x781f31
fst qword [esp + 0x68]
mov ecx, 0x55555556
mov eax, dword [esp + 0x6c]
fld st(0)
fmul qword [0xb4b9c0]
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 0x781f29
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.00782ec0
add esp, 8
test eax, eax
je 0x781f61
mov dword [esp + 0x10], 0xbb3438
mov edx, 3
xor ecx, ecx
jmp 0x782ce5
fldz
xor edx, edx
fld qword [esp + 0x10]
fucomi st(1)
fstp st(1)
fld1
fld st(0)
fld qword [0xb4b9d8]
fldz
ja 0x781fa8
fstp st(0)
fstp st(1)
fstp st(1)
fstp st(0)
cmp ebx, 0xc
jne 0x78209f
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 0x7820e5
fstp st(0)
fld st(1)
fxch st(2)
fmul qword [0xb4b9c8]
mov eax, edx
cmp edx, 0x15e
jbe 0x781fc6
fstp st(0)
fldz
fxch st(2)
jmp 0x781fd3
fxch st(4)
fucomi st(4)
lea edx, [eax + 0x64]
fxch st(4)
fxch st(2)
jae 0x781fa8
fstp st(2)
fld st(1)
fxch st(2)
fmul dword [0xb4b9d0]
mov ecx, eax
cmp eax, 0x15e
jbe 0x781fee
fstp st(0)
fldz
jmp 0x781ff9
fxch st(4)
fucomi st(4)
lea eax, [ecx + 0xa]
fxch st(4)
jae 0x781fd3
fstp st(0)
fld st(1)
fxch st(2)
fmul dword [0xb4b9d4]
mov edx, ecx
cmp ecx, 0x15e
fxch st(2)
ja 0x78201c
fxch st(4)
fucomi st(2)
lea ecx, [edx + 1]
fxch st(4)
jae 0x781ff9
fstp st(2)
fxch st(3)
fdivrp st(1)
fst qword [esp + 0x78]
fxch st(2)
fucomi st(2)
jbe 0x78204d
fxch st(2)
fmul dword [0xb4b9e0]
add edx, 0xfffffff8
fxch st(2)
fucomi st(2)
ja 0x78202c
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 0x78206a
fxch st(1)
fmul dword [0xb4b9d4]
dec edx
fxch st(1)
fucomi st(1)
ja 0x782053
fstp st(0)
fst qword [esp + 0x78]
fldz
cmp edx, 0x15f
fstp st(0)
jl 0x781f83
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 0x7823d0
fld qword [esp + 0x3c]
faddp st(1)
fst qword [esp + 0x78]
fld dword [0xb4b9d4]
fxch st(1)
fucomi st(1)
fstp st(1)
jae 0x7820bb
fstp st(0)
jmp 0x7820c6
fmul qword [0xb4b9e8]
inc edx
fstp qword [esp + 0x78]
mov esi, edx
mov edx, dword [esp + 0xc]
cmp ebx, 0xf
je 0x7820ef
cmp ebx, 2
je 0x7820ef
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 0x782123
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 0x782190
mov ecx, dword [ebp + 8]
push eax
call fcn.00782e40
add esp, 4
test eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], eax
je case.default.0x781968
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 0x7821c3
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 0x7821db
mov byte [edi], 0x30
inc edi
jmp 0x7821f4
mov ecx, esi
lea edx, [esp + 0x74]
mov ebx, eax
call fcn.00782ef0
mov byte [edi], al
mov eax, ebx
inc edi
test ebx, ebx
lea eax, [ebx - 1]
jg 0x7821db
cmp byte [esp + 0x50], 0
je 0x7821ff
mov byte [edi], 0x2e
inc edi
mov edx, dword [esp + 4]
mov ebx, eax
inc ebx
jns 0x782221
mov esi, eax
not eax
push eax
push 0x30
push edi
call fcn.0098a5f0
mov edx, dword [esp + 0x10]
add esp, 0xc
sub edi, esi
add edx, ebx
dec edi
lea ebx, [esp + 0x78]
test edx, edx
jle 0x78223e
mov esi, edx
mov ecx, ebx
lea edx, [esp + 0x74]
call fcn.00782ef0
mov edx, esi
mov byte [edi], al
inc edi
dec edx
jg 0x782229
cmp byte [esp + 0x2c], 0
jne 0x78224f
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 8]
jmp 0x782285
cmp byte [esp + 0x50], 0
mov esi, dword [esp + 0x4c]
mov edx, dword [esp + 8]
je 0x782285
movzx ecx, byte [edi - 1]
lea eax, [edi - 1]
cmp cl, 0x30
je 0x782db7
cmp cl, 0x2e
jne 0x782285
cmp byte [esp + 0x30], 0
je 0x782280
mov byte [edi], 0x30
inc edi
jmp 0x782285
mov edi, eax
mov byte [eax], 0
cmp byte [esp + 0x38], 2
jne 0x782305
mov eax, dword [esp + 0x54]
test edx, edx
movzx eax, byte [eax + eax + 0xb4badb]
mov al, byte [eax + 0xbb3410]
mov byte [edi], al
jns 0x7822ac
mov byte [edi + 1], 0x2d
neg edx
jmp 0x7822b0
mov byte [edi + 1], 0x2b
cmp edx, 0x64
jge 0x7822ba
add edi, 2
jmp 0x7822da
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 0x782ce5
cmp byte [esp + 0x24], 0
jne 0x782ce5
mov ecx, dword [esp + 0xc]
mov eax, ecx
sub eax, edx
jg 0x78233b
mov ecx, dword [esp + 0x1c]
jmp 0x782ce5
mov ebx, dword [esp + 0x10]
test edx, edx
js 0x782353
mov edx, ecx
sub edx, eax
movzx edx, byte [ebx + edx]
mov byte [ebx + ecx], dl
lea ecx, [ecx - 1]
jg 0x782343
test eax, eax
jne 0x782364
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 0x1c]
jmp 0x782ce5
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.0098a5f0
add esp, 0xc
mov ecx, dword [esp + 0x1c]
mov edx, ebx
jmp 0x782ce5
xor ecx, ecx
cmp byte [esp + 0x34], 0
jne 0x7823aa
mov dword [esp + 0xc], 0
xor edx, edx
jmp 0x782ce5
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 0x78239b
mov edx, 1
mov byte [esp + 0x82], 0x25
lea eax, [esp + 0x82]
xor ecx, ecx
mov dword [esp + 0x10], eax
jmp 0x782ce5
cmp byte [esp + 0x34], 0
jne 0x78244e
mov ecx, dword [esp + 0x44]
call fcn.00782f40
test eax, eax
je 0x782444
mov cl, byte [eax]
cmp cl, 0xc0
mov byte [esp + 0x82], cl
jae 0x782418
mov edi, 1
mov ebx, dword [ebp + 8]
lea edx, [esp + 0x82]
jmp 0x78251d
mov cl, byte [eax + 1]
mov edx, ecx
and dl, 0xc0
cmp dl, 0x80
jne 0x782404
mov byte [esp + 0x83], cl
mov cl, byte [eax + 2]
mov edx, ecx
and dl, 0xc0
cmp dl, 0x80
je 0x782d84
mov edi, 2
jmp 0x782409
mov byte [esp + 0x82], 0
jmp 0x782404
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x18], ecx
cmp eax, 0x7f
ja 0x782469
mov byte [esp + 0x82], al
jmp 0x782404
mov ebx, dword [ebp + 8]
cmp eax, 0x7ff
lea edx, [esp + 0x82]
mov ecx, eax
ja 0x78249e
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 0x78251d
cmp eax, 0xffff
ja 0x7824d9
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 0x78251d
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 0x782546
xor ecx, ecx
mov eax, edi
mov dword [esp + 0x10], edx
cmp byte [esp + 0x30], 0
jne 0x7826f0
mov edx, eax
jmp 0x782ce5
mov ecx, 1
sub ecx, eax
add ecx, dword [esp + 0xc]
cmp ecx, 2
jge 0x78255c
mov dword [esp + 0x10], ecx
jmp 0x782582
cmp byte [esp + 0x24], 0
je 0x782569
mov dword [esp + 0x10], ecx
jmp 0x782582
dec ecx
push 0x20
push ecx
push ebx
call fcn.00782f70
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.00782dd0
mov eax, edi
add esp, 0xc
cmp edi, 1
jg 0x782584
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 0x782534
cmp byte [esp + 0x34], 0
jne 0x7825d6
mov ecx, dword [esp + 0x44]
call fcn.00782f40
mov edi, dword [esp + 0x18]
mov cl, 5
jmp 0x7825e1
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 0x782641
mov dword [esp + 0x10], 0xc26970
xor edi, edi
test edx, edx
js 0x782680
cmp byte [esp + 0x30], 0
je 0x7826c9
mov eax, dword [esp + 0x10]
test edx, edx
je 0x782636
mov cl, byte [eax]
test cl, cl
je 0x782636
inc eax
dec edx
cmp cl, 0xc0
mov ebx, eax
jb 0x782632
movzx ecx, byte [ebx]
mov eax, ebx
inc ebx
and cl, 0xc0
cmp cl, 0x80
je 0x782624
test edx, edx
jg 0x782615
sub eax, dword [esp + 0x10]
mov ecx, edi
jmp 0x782534
cmp cl, 6
jne 0x7825fc
cmp dword [ebx + 0x10], 0
je 0x782652
mov edi, dword [esp + 0x10]
jmp 0x7825fe
test edx, edx
js 0x78265c
mov edi, dword [esp + 0x10]
jmp 0x7825fe
cmp dword [esp + 0xc], 0
je 0x782669
mov edi, dword [esp + 0x10]
jmp 0x7825fe
mov eax, dword [ebx + 0xc]
test eax, eax
jne 0x782676
mov edi, dword [esp + 0x10]
jmp 0x7825fe
cmp byte [ebx + 0x14], 0
je 0x782698
mov edi, dword [esp + 0x10]
push dword [esp + 0x10]
call fcn.0098a1e0
add esp, 4
and eax, 0x7fffffff
mov ecx, edi
jmp 0x782534
mov edi, ebx
mov ebx, dword [esp + 0x10]
mov dword [edi + 4], ebx
mov edx, ebx
mov ecx, dword [edi]
call fcn.00782fc0
mov dword [edi + 8], eax
push ebx
call fcn.0098a1e0
add esp, 4
and eax, 0x7fffffff
xor ecx, ecx
mov dword [edi + 0x10], eax
or byte [edi + 0x15], 4
jmp 0x78239b
xor ebx, ebx
test edx, edx
jne 0x7826dd
mov ecx, edi
xor edx, edx
jmp 0x782ce5
inc ebx
cmp ebx, edx
jge 0x7826e7
mov eax, dword [esp + 0x10]
cmp byte [eax + ebx], 0
jne 0x7826d8
mov ecx, edi
mov edx, ebx
jmp 0x782ce5
cmp dword [esp + 0xc], 0
jg 0x7826fe
mov edx, eax
jmp 0x782ce5
mov ebx, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
test eax, eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x2c], eax
jg 0x78271f
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x2c]
jmp 0x782ce5
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 0x78271f
mov dword [esp + 0xc], ebx
jmp 0x782712
cmp ebx, 6
mov byte [esp + 0x20], 0x22
je 0x78274b
mov byte [esp + 0x20], 0x27
cmp byte [esp + 0x34], 0
jne 0x782761
mov ecx, dword [esp + 0x44]
call fcn.00782f40
mov dword [esp + 0x3c], eax
jmp 0x782772
mov eax, dword [esp + 0x18]
mov ecx, dword [eax]
add eax, 4
mov dword [esp + 0x18], eax
mov dword [esp + 0x3c], ecx
mov edi, 0x785e80
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 [0xbb344f]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x7828a5
mov al, byte [0xbb344f]
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 [0xbb344f], dl
jne 0x7827ab
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 0x78281c
xor eax, eax
cmp edi, 2
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
movzx ecx, byte [0xbb344f]
and al, 7
movzx eax, al
bt ecx, eax
jae 0x7827f6
jmp 0x7828a5
xor eax, eax
cmp edi, 2
sete al
mov ecx, eax
not ecx
lea eax, [eax + ecx*2 + 4]
movzx ecx, byte [0xbb344f]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x782885
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 [0xbb3444]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb3444], 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 [0xbb344f], 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 [0xbb344f], al
mov edi, dword [esp + 0x60]
xor eax, eax
mov ecx, edi
xor ecx, 0x7af450
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbb345b]
bt ecx, eax
jb 0x7829d6
mov al, byte [0xbb345b]
mov edx, edi
xor ecx, ecx
xor edx, 0x7af450
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 [0xbb345b], dl
jne 0x7828d3
mov edx, edi
xor ecx, ecx
movzx eax, al
xor edx, 0x7af450
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 0x782948
mov ecx, edi
xor eax, eax
xor ecx, 0x7af450
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbb345b]
bt ecx, eax
jae 0x782922
jmp 0x7829d6
mov ecx, edi
xor eax, eax
xor ecx, 0x7af450
sete al
mov ecx, eax
xor ecx, 3
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbb345b]
bt ecx, eax
jb 0x7829b4
mov ecx, edi
xor eax, eax
xor ecx, 0x7af450
sete al
mov ecx, eax
xor ecx, 0x802d4e23
lea ecx, [ecx + eax*2 + 0x218]
mov eax, dword [0xbb3450]
mov edx, ecx
shr edx, 0x1f
or edx, ecx
xor eax, ecx
and cl, 7
mov dword [0xbb3450], eax
not eax
imul edx, eax
mov ah, 1
xor dword [0xbb3454], edx
mov edx, dword [esp + 4]
shl ah, cl
or byte [0xbb345b], ah
mov ecx, edi
xor eax, eax
xor ecx, 0x7af450
sete al
mov ecx, eax
xor ecx, 3
lea ecx, [ecx + eax*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbb345b], al
cmp ebx, 5
mov ecx, 0xbb3450
mov eax, 0xbb3444
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 0x782a63
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 0x782a63
mov dword [esp + 4], edx
xor edx, edx
cmp ebx, dword [esp + 0x10]
sete dl
cmp byte [esp + 0x30], 0
je 0x782dc1
and ebx, 0xc0
cmp ebx, 0xc0
jne 0x782dc1
mov ecx, dword [esp + 0x48]
movzx ebx, byte [ecx + edi + 1]
inc edi
and bl, 0xc0
cmp bl, 0x80
je 0x782a4c
add eax, edx
mov edx, dword [esp + 4]
dec edx
jne 0x782a16
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 0x782aac
mov bh, ch
mov ecx, dword [ebp + 8]
mov eax, edx
sar eax, 0x1f
push eax
call fcn.00782e40
mov ch, bh
add esp, 4
test eax, eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x10], eax
je case.default.0x781968
xor eax, eax
and ch, bl
je 0x782ac1
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 0x782af8
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 0x782aec
inc eax
jmp 0x782af3
mov byte [ebx + eax + 1], dl
add eax, 2
inc ecx
cmp ecx, edi
jne 0x782ad4
cmp byte [esp + 4], 0
jne 0x782b05
mov ecx, dword [esp + 0x10]
jmp 0x782b11
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 0x782534
mov eax, dword [ebp + 8]
test byte [eax + 0x15], 1
je case.default.0x781968
mov ecx, dword [esp + 0x18]
mov eax, dword [ecx]
add ecx, 4
mov dword [esp + 0x18], ecx
test eax, eax
jne 0x782b43
xor ecx, ecx
jmp 0x78239b
mov ecx, dword [eax + 4]
test ecx, ecx
je 0x782b3c
push ecx
push dword [eax]
mov ebx, dword [ebp + 8]
push ebx
call fcn.00782dd0
add esp, 0xc
xor ecx, ecx
jmp 0x78239b
mov eax, dword [ebp + 8]
test byte [eax + 0x15], 1
je case.default.0x781968
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 0x782cc0
mov edx, fcn.007c8c60
mov eax, fcn.007c8c60
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 [0xbb3463]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x782ca1
mov al, byte [0xbb3463]
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 [0xbb3463], ah
jne 0x782bc3
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 0x782c34
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
movzx ecx, byte [0xbb3463]
and al, 7
movzx eax, al
bt ecx, eax
jae 0x782c10
jmp 0x782ca1
xor eax, eax
cmp edx, 0xffffffff
sete al
mov ecx, eax
xor ecx, 5
lea eax, [ecx + eax*2 + 4]
movzx ecx, byte [0xbb3463]
and al, 7
movzx eax, al
bt ecx, eax
jb 0x782c80
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 [0xbb345c], ecx
and cl, 7
shl al, cl
or byte [0xbb3463], 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 [0xbb3463], al
push ebx
mov eax, dword [ebp + 8]
mov ebx, eax
push eax
call fcn.00783000
add esp, 8
push 1
push 0xbb345c
push ebx
call fcn.00782dd0
add esp, 0xc
add dword [esp + 0x18], 8
push dword [edi + esi*8 + 0x10]
mov esi, dword [ebp + 8]
push esi
call fcn.00783000
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 0x782d3b
cmp byte [esp + 0x24], 0
mov edi, edx
mov dword [esp + 0x1c], ecx
jne 0x782d1d
push 0x20
push ebx
mov ebx, dword [ebp + 8]
push ebx
call fcn.00782f70
add esp, 0xc
push edi
push dword [esp + 0x14]
push ebx
call fcn.00782dd0
add esp, 0xc
mov edx, dword [esp + 0x1c]
jmp 0x782d50
push edi
push dword [esp + 0x14]
mov edi, dword [ebp + 8]
push edi
call fcn.00782dd0
add esp, 0xc
push 0x20
push ebx
mov ebx, edi
push edi
call fcn.00782f70
jmp 0x782d14
push edx
push dword [esp + 0x14]
mov ebx, dword [ebp + 8]
push ebx
mov edi, ecx
call fcn.00782dd0
mov edx, edi
add esp, 0xc
test edx, edx
je 0x782d5b
mov ecx, dword [ebx]
call fcn.00780810
mov edi, dword [esp + 0x64]
inc esi
jmp 0x781219
cmp ebx, 0x53
mov dword [esp + 8], 0x15
je case.0x78150b.100
cmp ebx, 0x72
je 0x78173b
jmp case.default.0x781968
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 0x78251d
mov byte [esp + 0x85], al
jmp 0x782518
mov byte [eax], 0
mov edi, eax
jmp 0x78225e
mov ecx, dword [esp + 0x48]
inc edi
jmp 0x782a5a