Function at 0x81fda0
Capabilities:
Encode data using xor
Terminate process

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xb4
mov dword [esp], edx
mov ebx, ecx
mov esi, dword [esp + 0xd0]
mov edi, dword [esp + 0xc8]
mov eax, dword [0xbd33e0]
xor eax, esp
mov dword [esp + 0xb0], eax
mov ecx, dword [ecx]
movzx eax, byte [esi + 0x34]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esi + 0x48]
lea eax, [eax + eax*8]
mov dword [esp + 0x18], eax
mov dword [esp + 8], ecx
mov ecx, dword [edi + 4]
mov edx, dword [ecx + eax*8 + 0x34]
mov dword [esp + 0x1c], ecx
lea ecx, [edi + 0x1e8]
mov dword [esp + 0x28], edx
call fcn.00822cf0
not edx
not eax
mov ecx, dword [esp + 0xcc]
and eax, dword [esp + 0xd4]
and edx, dword [esp + 0xd8]
mov dword [esi + 0x54], edx
mov dword [esi + 0x50], eax
mov eax, dword [edi + 0x4c]
mov ebp, dword [edi + 0x48]
mov edi, ecx
mov edx, eax
shrd ebp, eax, cl
mov eax, ecx
shr edx, cl
test al, 0x20
mov ecx, ebx
cmovne ebp, edx
mov dword [esp + 0x20], ebp
call fcn.007fb640
mov ecx, ebx
mov dword [esi + 0x10], eax
mov edi, eax
mov dword [esi + 0xc], eax
mov dword [esp + 4], ebx
call fcn.007fb640
mov dword [esi + 0x18], eax
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0x60], eax
cmp byte [esi + 0x34], 0
je 0x81fe93
mov eax, dword [esp + 0x18]
test byte [ecx + eax*8 + 0x2c], 8
je 0x81fe93
mov ecx, dword [esp + 4]
mov edx, 0x45
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [ecx + 0x2c], eax
mov ecx, dword [esp + 0xd0]
mov dword [ecx], eax
mov ecx, dword [esp]
push eax
push 0
call fcn.007d10d0
add esp, 8
mov eax, dword [esp + 0xcc]
mov esi, dword [esp + 0xc8]
test eax, eax
jle 0x81febc
mov eax, dword [esp + 0xcc]
imul ecx, eax, 0x58
cmp dword [esi + ecx + 0x2f0], 0
jne 0x81febc
dec eax
jg 0x81feac
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], edi
mov edi, dword [esp]
lea ecx, [esi + 0x50]
mov dword [esp + 0x6c], ecx
mov edx, dword [ebx + ebp*8 + 0x30]
test dl, 0x10
je 0x81ff25
mov esi, dword [ebx + ebp*8 + 0x24]
mov ecx, edi
mov edx, 0xd
push dword [ebx + ebp*8 + 0x20]
push 0
push esi
call fcn.007d10f0
add esp, 0xc
mov ecx, edi
mov edx, 0xe
push dword [esp + 0x10]
push esi
mov esi, dword [esp + 0xd0]
call fcn.007d10d0
add esp, 8
mov edi, dword [esp + 0xd0]
xor ecx, ecx
mov dword [edi + 0x3c], eax
mov byte [edi + 0x35], 0xb
jmp 0x821668
mov ecx, dword [esp + 0x20]
and ecx, 1
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 8]
mov ebx, dword [ecx + 0x24]
test ebx, 0x400
je 0x820178
movzx ebx, word [ecx + 0x28]
mov ecx, dword [esp + 4]
lea edx, [ebx + 2]
call fcn.007fa700
mov edx, dword [esp + 0xd0]
mov ecx, eax
test ebx, ebx
mov dword [esp + 0x10], ecx
mov esi, dword [edx + 0xc]
je 0x81ffbd
lea edi, [ecx + 2]
xor ebp, ebp
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x30]
mov edx, dword [eax + ebp*4]
test edx, edx
je 0x81ffb8
test byte [edx + 0xc], 1
lea eax, [edi + ebp]
je 0x81ffa4
mov ecx, dword [esp + 4]
push eax
push dword [esp + 0x18]
push ebp
mov eax, dword [esp + 0xdc]
mov esi, eax
push eax
call fcn.008292d0
add esp, 0x10
mov esi, dword [esi + 0x10]
jmp 0x81ffb8
mov ecx, dword [edx]
mov edx, dword [ecx + 0x10]
mov ecx, dword [esp + 4]
push 1
push eax
call fcn.008296a0
add esp, 8
inc ebp
cmp ebp, ebx
jne 0x81ff6c
mov dword [esp + 0x14], esi
mov esi, dword [esp]
mov ebp, dword [esp + 0x10]
mov edx, 0x45
mov ecx, esi
push ebp
mov edi, dword [esp + 0xc]
push dword [edi + 0x18]
call fcn.007d10d0
add esp, 8
lea eax, [ebp + 1]
mov ecx, esi
mov edx, 0x45
push eax
push ebx
call fcn.007d10d0
add esp, 8
cmp byte [edi + 0x1c], 1
mov eax, 0
mov ecx, esi
mov edx, 9
sbb eax, eax
or eax, 0xfffffff9
push eax
push dword [edi + 0x20]
push ebp
push dword [esp + 0x20]
mov esi, dword [esp + 0x38]
push esi
call fcn.007f75d0
add esp, 0x14
mov byte [edi + 0x1c], 0
mov edi, dword [esp + 0xd0]
mov al, 0x3d
mov dword [edi + 0x38], esi
mov esi, dword [esp + 0xc8]
cmp byte [esi + 0x2e], 0
je 0x82003d
mov al, 0xad
mov ecx, dword [esp]
mov byte [edi + 0x35], al
call fcn.007fdcb0
test bx, bx
mov dword [edi + 0x3c], eax
jne 0x820059
mov ebp, dword [esp + 0x18]
jmp 0x82160e
mov ebp, dword [edi + 0x40]
add dword [esp + 0x10], 2
mov edx, dword [esp + 8]
mov eax, dword [edx + 0x30]
mov edi, dword [eax + ebx*4 - 4]
movzx eax, word [edi + 0xc]
mov ecx, eax
and ecx, 1
sub ebp, ecx
cmp ebx, 0x10
lea ebx, [ebx - 1]
jg 0x82009b
movzx ecx, word [edx + 0x1e]
bt ecx, ebx
jae 0x82009b
mov ecx, dword [esp + 0xd0]
mov edx, edi
call fcn.00829730
jmp 0x820164
test al, 1
je 0x820164
mov eax, dword [edi]
mov ecx, dword [eax + 0xc]
call fcn.007fb610
cmp eax, 1
jne 0x820164
mov eax, dword [esp + 0x2c]
cmp byte [eax + 0x51], 0
jne 0x8200f2
mov eax, dword [esp + 0xd0]
lea ecx, [ebp + ebp*4]
mov esi, dword [esp]
mov eax, dword [eax + 0x44]
mov edx, dword [eax + ecx*4 + 4]
mov ecx, esi
call fcn.007f77c0
movzx edx, byte [eax]
mov ecx, esi
push dword [eax + 0xc]
push dword [eax + 8]
push dword [eax + 4]
call fcn.007d10f0
add esp, 0xc
mov ecx, dword [esp + 4]
mov edx, 0x35
push 0
push 0
call fcn.007db7a0
add esp, 8
test eax, eax
je 0x820164
mov esi, eax
mov eax, dword [edi]
mov ecx, dword [esp + 0x2c]
mov edx, 0xad
mov eax, dword [eax + 0xc]
mov dword [esi + 0xc], eax
push 0
call fcn.007e44c0
add esp, 4
test eax, eax
mov dword [esi + 0x10], eax
je 0x820152
mov ecx, dword [esp + 0x10]
lea ecx, [ecx + ebx]
mov dword [eax + 0x1c], ecx
push 0
mov eax, dword [esp + 0xd4]
push dword [eax + 0x18]
push esi
push dword [esp + 0x10]
call fcn.007fc0d0
add esp, 0x10
mov ecx, dword [esp + 0x2c]
mov edx, esi
mov dword [esi + 0xc], 0
call fcn.007cb9e0
test ebx, ebx
jg 0x820061
mov edi, dword [esp + 0xd0]
jmp 0x82020f
imul eax, eax, 0x58
mov ebp, dword [esp + 0x1c]
test ebx, 0x100
mov eax, dword [esi + eax + 0x2fc]
je 0x820227
mov ecx, ebx
and ecx, 5
je 0x820227
mov eax, dword [esp + 8]
mov ebp, dword [esp + 4]
mov eax, dword [eax + 0x30]
mov esi, dword [ebp + 0x2c]
mov ecx, ebp
mov edx, dword [eax]
inc esi
mov dword [ebp + 0x2c], esi
mov dword [esp + 8], edx
push esi
push dword [esp + 0x18]
push 0
mov ebx, dword [esp + 0xdc]
push ebx
call fcn.008292d0
add esp, 0x10
mov edi, eax
cmp eax, esi
je 0x8201dd
mov ecx, ebp
mov edx, esi
call fcn.007fc440
mov ecx, dword [esp]
mov edx, 0x1f
push edi
push dword [ebx + 0x10]
push dword [esp + 0x30]
call fcn.007d10f0
add esp, 0xc
mov byte [ebx + 0x35], 0xad
mov edx, dword [esp + 8]
mov edi, ebx
mov eax, dword [ebx + 0x50]
mov ecx, dword [ebx + 0x54]
and ecx, dword [edx + 0x2c]
and eax, dword [edx + 0x28]
or eax, ecx
je 0x82021f
mov esi, dword [esp + 0xc8]
mov ebp, dword [esp + 0x18]
jmp 0x82160e
or byte [edx + 0xa], 4
mov eax, edx
jmp 0x82020f
mov ecx, ebx
and ecx, 0x102
cmp ecx, 0x102
jne 0x820440
xor edx, edx
test bl, 0x20
mov esi, 0
mov ecx, 0
je 0x82025a
mov ecx, dword [esp + 8]
mov ecx, dword [ecx + 0x30]
mov esi, dword [ecx]
mov ecx, 1
mov ebp, dword [esp + 4]
test bl, 0x10
je 0x82026d
mov edx, dword [esp + 8]
mov edx, dword [edx + 0x30]
mov edx, dword [edx + ecx*4]
mov ebx, dword [esp + 0x14]
mov ecx, edx
test ebx, ebx
cmovne ecx, esi
cmovne esi, edx
test esi, esi
mov dword [esp + 8], ecx
je 0x82032b
mov ebx, dword [esi]
mov edi, dword [ebx + 0x10]
mov ecx, edi
call fcn.007f9e20
test eax, eax
je 0x8202c8
mov ecx, ebp
call fcn.007fcfa0
mov dword [esp + 0xac], eax
mov edi, eax
mov ecx, ebp
mov edx, dword [ebx + 0x10]
push 1
push eax
call fcn.008296a0
add esp, 8
mov al, byte [ebx]
mov dword [esp + 0x2c], edi
inc al
and al, 2
or al, 1
movzx eax, al
jmp 0x8202fd
lea eax, [esp + 0xac]
mov ecx, ebp
mov edx, edi
push eax
call fcn.007fa200
add esp, 4
mov ecx, dword [esp + 0xd0]
mov edx, esi
mov edi, eax
call fcn.00829730
movzx eax, byte [ebx]
mov ecx, dword [esp + 0xac]
add eax, 0xffffffca
mov dword [esp + 0x2c], ecx
mov ebx, ebp
mov ebp, dword [esp]
movzx edx, byte [eax + 0xb50654]
mov ecx, ebp
push edi
mov edi, dword [esp + 0x14]
push edi
mov esi, dword [esp + 0x30]
push esi
call fcn.007d10f0
add esp, 0xc
mov edx, dword [esp + 0x2c]
mov ecx, ebx
call fcn.007fc440
jmp 0x82034c
mov ebp, dword [esp]
xor ecx, ecx
test ebx, ebx
sete cl
lea edx, [ecx*4 + 0x21]
mov ecx, ebp
push eax
mov esi, dword [esp + 0x2c]
push esi
call fcn.007d10d0
add esp, 8
mov eax, dword [esp + 8]
test eax, eax
jne 0x820361
mov ebx, dword [esp + 0x14]
mov esi, 0xad
xor edi, edi
jmp 0x8203ce
mov ecx, dword [esp + 4]
mov ebx, dword [eax]
mov edi, dword [ecx + 0x2c]
inc edi
mov dword [ecx + 0x2c], edi
mov edx, dword [ebx + 0x10]
push 1
push edi
call fcn.008296a0
add esp, 8
mov ecx, dword [ebx + 0x10]
call fcn.007f9e20
test eax, eax
jne 0x8203c3
mov al, byte [ebx]
cmp al, 0x36
je 0x8203b3
cmp al, 0x38
je 0x8203b3
mov eax, dword [esp + 0x14]
lea esi, [eax + eax + 0x36]
mov edx, dword [esp + 8]
mov ecx, dword [esp + 0xd0]
mov ebp, dword [esp]
call fcn.00829730
mov ebx, dword [esp + 0x14]
jmp 0x8203ce
xor eax, eax
cmp dword [esp + 0x14], 0
sete al
lea esi, [eax + eax + 0x37]
jmp 0x82039a
mov ebx, dword [esp + 0x14]
mov ebp, dword [esp]
lea esi, [ebx + ebx + 0x36]
mov ecx, ebp
call fcn.007fdcb0
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0x28]
xor bl, 5
cmp esi, 0xad
mov byte [ecx + 0x35], bl
mov dword [ecx + 0x38], edx
mov dword [ecx + 0x3c], eax
je 0x82016c
mov ecx, dword [esp + 4]
mov eax, edx
mov edx, 0x7f
mov ebx, dword [ecx + 0x2c]
inc ebx
mov dword [ecx + 0x2c], ebx
mov ecx, ebp
push ebx
push eax
call fcn.007d10d0
add esp, 8
mov ecx, ebp
mov edx, esi
push ebx
push dword [esp + 0x14]
push edi
call fcn.007d10f0
add esp, 0xc
mov ecx, ebp
mov edx, 0x53
call fcn.0078e010
mov edi, dword [esp + 0xd0]
jmp 0x82020f
test ebx, 0x200
je 0x820d53
mov esi, dword [esp + 8]
test bl, 0x20
mov edi, 0
mov dword [esp + 0xc], 0
movzx eax, word [esi + 0x1a]
movzx edx, word [esi + 0x18]
movzx ebp, word [esi + 0x1c]
mov dword [esp + 0x38], eax
mov eax, dword [esi + 0x20]
mov ecx, edx
mov dword [esp + 0x30], edx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xd0]
mov eax, dword [eax + 8]
mov dword [esp + 0x24], eax
mov eax, 0
je 0x8204a4
mov edi, dword [esp + 0x30]
mov ecx, dword [esi + 0x30]
movzx eax, word [esp + 0x38]
lea edx, [edi + 1]
mov edi, dword [ecx + edi*4]
test bl, 0x10
mov dword [esp + 0x44], edi
jne 0x8204ba
mov edx, dword [esp + 0x10]
mov edi, eax
xor ebx, ebx
jmp 0x8205a1
mov ecx, dword [esi + 0x30]
movzx edi, bp
cmp eax, edi
cmova edi, eax
mov ebx, dword [ecx + edx*4]
test byte [ebx + 0xb], 1
je 0x820549
mov ecx, dword [esp + 4]
mov esi, dword [esp]
mov edx, 0x45
mov eax, dword [ecx + 0x2c]
inc eax
mov dword [ecx + 0x2c], eax
mov ecx, dword [esp + 0xd0]
mov dword [ecx + 0x2c], eax
mov ecx, esi
push eax
push 1
call fcn.007d10d0
add esp, 8
mov ecx, esi
mov esi, dword [esp + 8]
call fcn.007fdcb0
mov edx, dword [esp + 0xd0]
mov word [esp + 0x34], bp
mov ebp, ebx
mov ebx, dword [esp + 0x30]
mov dword [edx + 0x30], eax
mov eax, dword [edx + 0x2c]
lea ecx, [eax + eax]
mov dword [edx + 0x2c], ecx
mov ecx, dword [esp + 0x10]
xor edx, edx
mov ecx, dword [ecx + 0x1c]
cmp byte [ecx + ebx], 1
mov ebx, ebp
movzx ebp, word [esp + 0x34]
mov ecx, dword [esp + 0xd0]
sete dl
xor edx, dword [esp + 0x14]
lea eax, [edx + eax*2]
mov dword [ecx + 0x2c], eax
cmp dword [esp + 0x44], 0
je 0x82055e
mov edx, dword [esp + 0x10]
mov dword [esp + 0xc], 0
jmp 0x8205a1
mov edx, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
mov eax, dword [edx + 4]
movsx eax, word [eax + ecx*2]
test eax, eax
js 0x82058b
mov ecx, dword [edx + 0xc]
lea eax, [eax + eax*4]
mov ecx, dword [ecx + 4]
cmp byte [ecx + eax*4 + 0xc], 0
je 0x82059b
mov dword [esp + 0xc], 0
jmp 0x8205a1
cmp ax, 0xfffe
je 0x82059b
mov dword [esp + 0xc], 0
jmp 0x8205a1
mov al, 1
mov dword [esp + 0xc], eax
mov eax, 0x80030
mov dword [esp + 0x3c], 0
and eax, dword [esi + 0x24]
cmp eax, 0x80000
jne 0x8205ea
mov ecx, dword [esp + 4]
mov eax, dword [esp + 0xd0]
mov edx, dword [ecx + 0x2c]
mov edi, eax
inc edx
mov dword [ecx + 0x2c], edx
mov dword [esp + 0x3c], edx
mov dword [eax + 0x24], edx
call fcn.007fb640
mov edx, dword [esp + 0x10]
mov dword [edi + 0x28], eax
mov edi, 1
mov al, 1
mov dword [esp + 0xc], eax
movzx eax, word [edx + 0x32]
mov esi, dword [esp + 0x30]
cmp si, ax
jae 0x82060c
mov ecx, dword [edx + 0x1c]
mov edx, dword [esp + 0x20]
cmp byte [ecx + esi], 0
setne cl
and dl, 1
xor dl, cl
jne 0x820633
cmp dword [esp + 0x14], 0
jne 0x82062e
mov eax, dword [esp + 0x44]
mov dword [esp + 0x4c], 0
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x38]
mov word [esp + 0x34], ax
jmp 0x820655
cmp ax, si
jne 0x820613
mov word [esp + 0x34], bp
mov dword [esp + 0x40], ebx
movzx ebp, byte [esp + 0x38]
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 0xc]
mov dword [esp + 0x4c], eax
mov dword [esp + 0xc], 0
mov edx, dword [esp + 0xd0]
mov ecx, dword [esp + 4]
lea eax, [esp + 0xa8]
push eax
push edi
push dword [esp + 0x1c]
call fcn.008297b0
add esp, 0xc
mov edi, dword [esp + 0xa8]
xor edx, edx
test bp, bp
mov dword [esp + 0x20], eax
mov dword [esp + 0x54], ebp
jne 0x820691
mov ebp, dword [esp + 0x18]
jmp 0x8206a7
mov ebp, dword [esp + 0x18]
test edi, edi
je 0x8206a7
mov ecx, dword [esp + 0x2c]
lea edx, [edi + esi]
call fcn.0078a6b0
mov edx, eax
cmp dword [esp + 0x3c], 0
mov eax, 0x28
mov ecx, 0x10
cmovne ecx, eax
mov eax, dword [esp + 0xd0]
mov eax, dword [eax + ecx]
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x38], eax
mov ah, 1
test ecx, ecx
mov al, 1
je 0x8206da
test byte [ecx + 0xc], 0x28
setne al
test ebx, ebx
je 0x8206e5
test byte [ebx + 0xc], 0x28
setne ah
mov esi, dword [esp + 0x40]
mov dword [esp + 0x64], ebx
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x48], edi
movzx edi, al
mov dword [esp + 0x44], edx
mov byte [esp + 0x5c], ah
test esi, esi
setne al
test bx, bx
setne cl
or cl, al
test esi, esi
movzx ecx, cl
je 0x8207e2
mov eax, dword [esi]
movzx ebp, word [esp + 0x34]
mov dword [esp + 0x50], edi
mov dword [esp + 0xc], ecx
mov ecx, dword [esp + 4]
mov edi, dword [eax + 0x10]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x34], ebp
lea eax, [eax + ebx]
mov edx, edi
push ebp
mov ebp, eax
push eax
call fcn.008296a0
add esp, 8
mov ebx, dword [esp]
mov edx, dword [esp + 0xd0]
mov ecx, ebx
push esi
call fcn.008299b0
add esp, 4
mov ecx, edi
call fcn.007fe7a0
test eax, eax
je 0x82077b
mov ecx, ebx
mov edx, 0x32
push dword [esp + 0x38]
push ebp
call fcn.007d10d0
add esp, 8
mov ebx, dword [esp + 0x48]
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
test ebx, ebx
je 0x8207a3
lea eax, [ebx + eax]
mov ecx, edi
mov edx, esi
push eax
call fcn.008299e0
mov eax, dword [esp + 0x34]
add esp, 4
mov ecx, edi
add esi, eax
call fcn.007f9e20
mov ecx, dword [esp + 4]
xor edx, edx
test eax, eax
je 0x8207c5
mov dword [esp + 0x50], 1
mov edi, esi
jmp 0x820863
mov edi, ecx
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0x40]
call fcn.00829730
mov ecx, edi
xor edx, edx
mov edi, esi
jmp 0x820863
cmp byte [esp + 0xc], 0
je 0x820819
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x30]
mov ecx, dword [esp]
mov edx, 0x48
lea eax, [eax + esi]
push eax
push 0
call fcn.007d10d0
add esp, 8
lea edi, [esi + 1]
mov dword [esp + 0x50], 0
mov edx, 1
jmp 0x820853
xor edx, edx
cmp dword [esp + 0x3c], 0
mov dword [esp + 0x50], edi
jne 0x820830
mov edi, dword [esp + 0x30]
mov dword [esp + 0xc], ecx
jmp 0x82085b
mov eax, dword [esp + 0x20]
mov esi, dword [esp + 0x30]
mov ecx, dword [esp]
mov edx, 0x48
lea eax, [eax + esi]
push eax
push 0
call fcn.007d10d0
xor edx, edx
add esp, 8
lea edi, [esi + 1]
mov dword [esp + 0xc], 1
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x48]
mov eax, edi
mov dword [esp + 0x34], edx
sub eax, edx
mov edx, dword [esp + 0x20]
push ebx
push eax
call fcn.00829a30
add esp, 8
mov eax, dword [esp + 8]
movzx eax, word [eax + 0x2a]
test eax, eax
je 0x82088d
cmp edi, eax
je 0x820959
mov eax, dword [esp + 8]
mov ebx, edi
test byte [eax + 0x26], 4
je 0x8208ad
mov ecx, dword [esp]
mov edx, 0x76
push dword [esp + 0x24]
call fcn.007f9600
add esp, 4
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x50]
test eax, eax
je 0x82092e
mov edi, dword [esp]
mov edx, 0x45
mov ecx, edi
push eax
push 1
call fcn.007d10d0
add esp, 8
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x14]
lea eax, [ecx + eax*4]
mov ecx, edi
movzx edx, byte [eax + esi*2 + 0xb50658]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x40]
push dword [esp + 0x30]
call fcn.0078dfd0
add esp, 0x10
mov ecx, edi
call fcn.007fdcb0
add eax, 2
mov ecx, edi
mov edx, 0xb
push eax
push 0
call fcn.007d10d0
add esp, 8
mov ecx, dword [esp + 0x14]
xor eax, eax
cmp ebx, 1
setg al
sub ebx, esi
movzx edx, byte [ecx + eax*4 + 0xb5065a]
mov ecx, edi
jmp 0x820944
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
lea eax, [eax + ecx*4]
mov ecx, dword [esp]
movzx edx, byte [eax + esi*2 + 0xb50658]
push ebx
push dword [esp + 0x24]
push dword [esp + 0x40]
push dword [esp + 0x30]
call fcn.0078dfd0
add esp, 0x10
mov esi, dword [esp + 0x64]
movzx edx, byte [esp + 0x5c]
mov ecx, dword [esp + 0x54]
test esi, esi
je 0x820a33
mov edi, dword [esp + 0x20]
mov eax, dword [esi]
mov dword [esp + 0x40], edx
mov ebx, dword [eax + 0x10]
add edi, dword [esp + 0x30]
movzx eax, cx
mov ecx, dword [esp + 4]
mov dword [esp + 0xc], eax
mov edx, ebx
push eax
push edi
call fcn.008296a0
add esp, 8
mov ebp, dword [esp]
mov edx, dword [esp + 0xd0]
mov ecx, ebp
push esi
call fcn.008299b0
add esp, 4
mov ecx, ebx
mov dword [esp + 0x54], ebx
call fcn.007fe7a0
test eax, eax
je 0x8209ce
mov ecx, ebp
mov edx, 0x32
push dword [esp + 0x38]
push edi
call fcn.007d10d0
add esp, 8
mov eax, dword [esp + 0x44]
mov ebp, dword [esp + 0x18]
mov esi, dword [esp + 0xc]
mov ebx, dword [esp + 0x54]
test eax, eax
je 0x820a02
mov ecx, ebx
mov edx, esi
push eax
call fcn.008299e0
add esp, 4
mov ecx, dword [esp + 4]
mov edx, edi
push dword [esp + 0x44]
push esi
call fcn.00829a30
add esp, 8
add esi, dword [esp + 0x30]
mov ecx, ebx
call fcn.007f9e20
test eax, eax
mov dword [esp + 0xc], esi
je 0x820a1f
mov dword [esp + 0x40], 1
jmp 0x820a78
mov edi, dword [esp + 0xd0]
mov edx, dword [esp + 0x64]
mov ecx, edi
call fcn.00829730
jmp 0x820a7f
cmp byte [esp + 0x4c], 0
mov eax, dword [esp + 0x3c]
jne 0x820a4c
mov eax, dword [esp + 0x30]
mov dword [esp + 0x40], edx
mov dword [esp + 0xc], eax
jmp 0x820a78
mov esi, dword [esp + 0x30]
test eax, eax
jne 0x820a6f
mov eax, dword [esp + 0x20]
mov ecx, dword [esp]
mov edx, 0x48
add eax, esi
push eax
push 0
call fcn.007d10d0
add esp, 8
xor edx, edx
inc esi
mov dword [esp + 0x40], edx
mov dword [esp + 0xc], esi
mov edi, dword [esp + 0xd0]
mov ebx, dword [esp + 0x2c]
mov edx, dword [esp + 0x48]
mov esi, dword [esp + 0xc8]
mov ecx, ebx
call fcn.00780810
mov edx, dword [esp + 0x44]
mov ecx, ebx
call fcn.00780810
mov ecx, dword [esp]
call fcn.007fdcb0
cmp dword [esp + 0xc], 0
mov ebx, dword [esp + 0x3c]
mov dword [edi + 0x3c], eax
je 0x820b06
mov ebp, dword [esp]
test ebx, ebx
je 0x820ad8
mov ecx, ebp
call fcn.007fdcb0
add eax, 3
mov ecx, ebp
mov edx, 0x14
push eax
push ebx
call fcn.007d10d0
add esp, 8
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x40]
movzx edx, byte [ecx + eax*2 + 0xb50660]
mov ecx, ebp
push dword [esp + 0xc]
push dword [esp + 0x24]
push dword [esp + 0x40]
push dword [esp + 0x30]
call fcn.0078dfd0
add esp, 0x10
mov ebp, dword [esp + 0x18]
test ebx, ebx
mov eax, ebx
mov ebx, dword [esp]
je 0x820b5e
mov ecx, ebx
mov dword [esp + 0x3c], eax
call fcn.007fdcb0
add eax, 2
mov ecx, ebx
mov edx, 0x12
push eax
push dword [esp + 0x40]
call fcn.007d10d0
add esp, 8
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x34]
movzx edx, byte [ecx + eax*2 + 0xb50660]
mov eax, dword [esp + 0xc]
add eax, ecx
mov ecx, ebx
push eax
push dword [esp + 0x24]
push dword [esp + 0x40]
push dword [esp + 0x30]
call fcn.0078dfd0
add esp, 0x10
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x24]
test eax, 0x40000
je 0x820b88
mov ecx, ebx
mov edx, 0x76
push 1
push dword [esp + 0x28]
call fcn.007d10d0
add esp, 8
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x24]
test al, 0x40
je 0x820b98
test byte [esi + 0x28], 0x20
mov bl, 1
je 0x820cca
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0xc]
cmp byte [ecx + 0x24], 0
js 0x820c2f
movzx eax, word [esi + 0x28]
test eax, 0x400
jne 0x820bcc
test eax, 0x1000
je 0x820c12
cmp byte [esi + 0x2e], 1
je 0x820bcc
mov eax, dword [esp + 8]
cmp word [eax + 0x28], 0
jne 0x820c12
mov eax, dword [esp + 4]
mov ebx, dword [esp]
mov edx, 0x86
mov esi, dword [eax + 0x2c]
mov ecx, ebx
inc esi
mov dword [eax + 0x2c], esi
push esi
push dword [esp + 0x28]
call fcn.007d10d0
add esp, 8
mov ecx, ebx
mov edx, 0x20
push esi
mov esi, dword [esp + 0xcc]
push 0
push dword [esp + 0x30]
call fcn.007d10f0
add esp, 0xc
xor ebx, ebx
jmp 0x820cca
mov edx, dword [esp + 0x10]
mov ecx, esi
push dword [esp + 0x24]
push dword [esp + 0x2c]
call fcn.00829a80
add esp, 8
xor ebx, ebx
jmp 0x820cca
mov eax, dword [esp + 0x24]
xor ebx, ebx
cmp dword [esp + 0x28], eax
je 0x820cca
call fcn.00792930
movzx edx, word [eax + 0x32]
mov ecx, dword [esp + 4]
mov edi, eax
call fcn.007fa700
cmp word [edi + 0x32], 0
je 0x820ca7
mov ebp, dword [esp + 0x24]
xor esi, esi
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 4]
mov ecx, dword [esp + 0x10]
movsx edx, word [eax + esi*2]
call fcn.007fc7b0
mov ecx, dword [esp + 0x2c]
cwde
mov edx, 0x59
lea ebx, [esi + ecx]
mov ecx, dword [esp]
push ebx
push eax
push ebp
call fcn.007d10f0
add esp, 0xc
movzx ebx, word [edi + 0x32]
inc esi
cmp esi, ebx
jb 0x820c64
mov esi, dword [esp + 0xc8]
mov ebp, dword [esp + 0x18]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp]
mov edx, 0x1d
push ebx
push eax
push dword [esp + 0x68]
push dword [esp + 0x34]
call fcn.0078dfd0
add esp, 0x10
mov edi, dword [esp + 0xd0]
xor ebx, ebx
cmp dword [edi], 0
jne 0x820d05
test byte [esi + 0x28], 0x20
jne 0x820cea
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x28]
push esi
push dword [esp + 0x28]
call fcn.00829b50
add esp, 8
mov eax, dword [esp + 0x10]
mov ecx, dword [eax + 0x24]
test ecx, ecx
je 0x820d05
mov edx, dword [esp + 0x28]
push dword [esp + 0x6c]
call fcn.00829db0
add esp, 4
mov eax, dword [esp + 8]
test byte [eax + 0x25], 0x10
je 0x820d15
mov byte [edi + 0x35], 0xad
jmp 0x820d26
cmp dword [esp + 0x14], 0
je 0x820d22
mov byte [edi + 0x35], 4
jmp 0x820d26
mov byte [edi + 0x35], 5
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 8]
mov dword [edi + 0x38], eax
mov al, byte [ecx + 0x26]
and al, 1
mov byte [edi + 0x36], al
test byte [ecx + 0x24], 0xf
jne 0x820d43
mov byte [edi + 0x37], 1
mov ecx, dword [esp + 0x10]
xor eax, eax
test bl, bl
cmovne ecx, eax
jmp 0x821664
mov edi, dword [esp + 0xd0]
test ebx, 0x2000
je 0x821623
mov ecx, dword [esp + 4]
mov ebx, dword [ecx + 0x2c]
mov eax, dword [ecx + 0x28]
mov dword [esp + 0x44], eax
inc eax
inc ebx
mov dword [ecx + 0x28], eax
mov dword [ecx + 0x2c], ebx
call fcn.007fb640
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x50], ebx
mov eax, dword [ebp + eax*8 + 0x18]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 8]
mov eax, dword [eax + 0x30]
mov eax, dword [eax]
mov dword [esp + 0x40], eax
mov eax, dword [eax + 0x1c]
mov byte [edi + 0x35], 0x41
mov dword [edi + 0x38], ebx
movzx ebx, byte [esi + 0x2c]
mov dword [esp + 0x3c], eax
cmp ebx, 2
jb 0x820e78
sub ebx, dword [esp + 0xcc]
mov ecx, dword [esp + 0x2c]
lea eax, [ebx + ebx*8]
lea edx, [eax*8 + 8]
push 0
call fcn.0078fe60
add esp, 4
test eax, eax
jne 0x820df3
mov esi, dword [esp + 0xd8]
mov edi, dword [esp + 0xd4]
jmp 0x821943
mov ecx, eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x48], ecx
lea esi, [ebp + eax*8 + 8]
movzx eax, bl
mov dword [ecx + 4], eax
mov dword [ecx], eax
mov eax, ecx
mov ecx, 0x12
add eax, 8
cmp ebx, 2
mov edi, eax
rep movsd dword es:[edi], dword [esi]
jge 0x820e2c
mov edi, dword [esp + 0xd0]
mov esi, dword [esp + 0xc8]
jmp 0x820e7f
mov ecx, dword [esp + 0xc8]
mov ebp, 1
mov edx, dword [ecx + 4]
mov esi, dword [esp + 0xd0]
lea ecx, [ebp + ebp*8]
lea edi, [eax + ecx*8]
imul ecx, ebp, 0x58
inc ebp
cmp ebp, ebx
movzx ecx, byte [esi + ecx + 0x34]
lea ecx, [ecx + ecx*8]
lea esi, [edx + ecx*8 + 8]
mov ecx, 0x12
rep movsd dword es:[edi], dword [esi]
jne 0x820e3b
mov ebp, dword [esp + 4]
mov edi, dword [esp + 0xd0]
mov esi, dword [esp + 0xc8]
jmp 0x820e83
mov eax, dword [esi + 4]
mov dword [esp + 0x48], eax
mov ebp, dword [esp + 4]
xor ebx, ebx
test byte [esi + 0x28], 0x10
mov ecx, dword [esp]
mov dword [esp + 0x58], 0
mov dword [esp + 0x4c], 0
jne 0x820f14
mov ecx, dword [esp + 0x14]
cmp byte [ecx + 0x24], 0
js 0x820ec8
mov eax, dword [ebp + 0x2c]
mov ecx, dword [esp]
mov edx, 0x48
inc eax
mov dword [ebp + 0x2c], eax
mov dword [esp + 0x58], eax
push eax
push 0
call fcn.007d10d0
add esp, 8
jmp 0x820f06
call fcn.00792930
mov esi, dword [ebp + 0x28]
mov dword [esp + 8], eax
mov edx, 0x64
lea ecx, [esi + 1]
mov dword [ebp + 0x28], ecx
mov ecx, dword [esp]
movzx eax, word [eax + 0x32]
push eax
mov dword [esp + 0x5c], esi
push esi
call fcn.007d10d0
add esp, 8
mov edx, dword [esp + 8]
mov esi, dword [esp + 0xc8]
mov ecx, ebp
call fcn.007f7980
mov eax, dword [ebp + 0x2c]
mov ecx, dword [esp]
inc eax
mov dword [esp + 0x4c], eax
mov dword [ebp + 0x2c], eax
mov edx, 0x45
push dword [esp + 0x50]
push 0
call fcn.007d10d0
add esp, 8
mov dword [esp + 0x70], eax
mov eax, dword [esi + 0x5c]
cmp eax, 2
jl 0x820fc1
xor edi, edi
xor esi, esi
mov ecx, dword [esp + 0xc8]
lea edx, [edi + edi*2]
shl edx, 4
mov ecx, dword [ecx + 0x64]
lea ebx, [ecx + edx]
cmp ebx, dword [esp + 0x40]
je 0x820f92
test byte [ecx + edx + 0xa], 6
jne 0x820f92
movzx ebx, word [ecx + edx + 0xc]
test ebx, 0x1fff
je 0x820f92
mov edx, dword [ecx + edx]
mov ecx, dword [esp + 0x2c]
push 0
call fcn.007fc000
add esp, 4
mov ecx, ebp
mov edx, esi
push eax
call fcn.007ea860
add esp, 4
mov esi, eax
mov eax, dword [esp + 0xc8]
mov eax, dword [eax + 0x5c]
inc edi
cmp edi, eax
jl 0x820f3b
test esi, esi
jne 0x820f9f
xor ebx, ebx
jmp 0x820fb3
mov ecx, ebp
mov edx, 0x1002c
push esi
push 0
call fcn.007db7a0
add esp, 8
mov ebx, eax
mov edi, dword [esp + 0xd0]
mov esi, dword [esp + 0xc8]
mov edx, fcn.0081c760
movzx ecx, byte [0xbba083]
not edx
and edx, 1
mov eax, edx
add eax, fcn.0081c760
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x82112c
mov al, byte [0xbba083]
mov ecx, edx
mov ah, 1
add ecx, fcn.0081c760
sete cl
not cl
and cl, 3
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbba083], ah
jne 0x820ff1
mov ecx, fcn.0081c760
movzx eax, al
not ecx
and ecx, 1
mov edx, ecx
add edx, fcn.0081c760
sete dl
not dl
and dl, 3
xor dl, 7
movzx edx, dl
bt eax, edx
jae 0x82105e
mov eax, ecx
movzx edx, byte [0xbba083]
add eax, fcn.0081c760
sete al
not al
and al, 3
movzx eax, al
bt edx, eax
jae 0x82103c
jmp 0x82112c
add ecx, fcn.0081c760
movzx ecx, byte [0xbba083]
sete al
not al
and al, 3
movzx eax, al
bt ecx, eax
jb 0x821108
mov eax, fcn.0081c760
xor ecx, ecx
not eax
and eax, 1
add eax, fcn.0081c760
mov eax, dword [0xbba070]
sete cl
xor ecx, 0xd44f7683
add ecx, 0x1250
mov edx, ecx
xor eax, ecx
shr edx, 0x1f
mov dword [0xbba070], eax
not eax
or edx, ecx
and cl, 7
imul edx, eax
mov eax, dword [0xbba074]
lea esi, [edx + edx]
xor eax, edx
shr edx, 0x1e
mov dword [0xbba074], eax
or esi, edx
not eax
mov edx, dword [0xbba078]
imul eax, esi
lea esi, [eax*4]
xor edx, eax
shr eax, 0x1d
mov dword [0xbba078], edx
or esi, eax
not edx
mov al, 1
imul edx, esi
mov esi, dword [esp + 0xc8]
shl al, cl
xor dword [str.Ti_N], edx
or byte [0xbba083], al
mov eax, fcn.0081c760
not eax
and eax, 1
add eax, fcn.0081c760
mov al, 0xfe
sete cl
not cl
and cl, 3
xor cl, 7
rol al, cl
and byte [0xbba083], al
movzx esi, word [esi + 0x28]
push 0xbba070
push 1
push ebp
call fcn.007fdcc0
add esp, 0xc
mov eax, dword [esp + 0x3c]
cmp dword [eax + 0xc], 0
jg 0x82115f
mov dword [esp + 0x34], 0
mov dword [esp + 0xc], 0
jmp 0x82158c
and esi, 0x400
mov edx, dword [esp + 0x28]
xor ecx, ecx
mov dword [esp + 0xc], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x54], ebx
or esi, 0x20
movzx eax, si
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x64], eax
mov eax, dword [esi + 0x14]
mov dword [esp + 0x10], ecx
lea ecx, [ecx + ecx*2]
shl ecx, 4
cmp dword [eax + ecx + 0x14], edx
je 0x8211b3
test byte [eax + ecx + 0xd], 4
jne 0x8211b3
mov eax, dword [esp + 0x10]
inc eax
mov ecx, eax
jmp 0x821583
mov esi, dword [eax + ecx]
test ebx, ebx
je 0x8211bf
mov dword [ebx + 0xc], esi
mov esi, ebx
mov edi, fcn.0082b5f0
mov edx, fcn.0082b5f0
xor eax, eax
or edi, 2
xor edx, 2
mov ecx, edi
add ecx, edx
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbba093]
bt ecx, eax
jb 0x8212f2
mov al, byte [0xbba093]
mov ebx, edi
xor ecx, ecx
mov ah, 1
add ebx, edx
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ebx + ecx*2]
xor cl, 7
shl ah, cl
or ah, al
lock cmpxchg byte [0xbba093], ah
jne 0x8211f5
mov ebx, edi
xor ecx, ecx
movzx eax, al
add ebx, edx
sete cl
mov ebx, ecx
xor ebx, 1
lea ecx, [ebx + ecx*2]
mov ebx, dword [esp + 0x54]
xor cl, 7
movzx ecx, cl
bt eax, ecx
jae 0x82125e
mov ecx, edi
xor eax, eax
add ecx, edx
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbba093]
bt ecx, eax
jae 0x82123c
jmp 0x8212f2
mov ecx, edi
xor eax, eax
add ecx, edx
sete al
mov ecx, eax
xor ecx, 1
lea eax, [ecx + eax*2]
movzx ecx, byte [0xbba093]
bt ecx, eax
jb 0x8212d6
mov ecx, edi
xor eax, eax
add ecx, edx
sete al
mov ecx, eax
xor ecx, 0x791469b1
lea ecx, [ecx + eax*2]
mov eax, dword [0xbba084]
xor eax, ecx
mov dword [0xbba084], eax
not eax
mov ebx, dword [0xbba088]
imul eax, ecx
and cl, 3
lea ebp, [eax + eax]
xor ebx, eax
shr eax, 0x1e
mov dword [0xbba088], ebx
or ebp, eax
not ebx
mov al, 1
imul ebx, ebp
mov ebp, dword [esp + 4]
shl al, cl
xor dword [0xbba08c], ebx
mov ebx, dword [esp + 0x54]
or byte [0xbba093], al
xor eax, eax
add edi, edx
sete al
mov ecx, eax
xor ecx, 1
lea ecx, [ecx + eax*2]
mov al, 0xfe
xor cl, 7
rol al, cl
and byte [0xbba093], al
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x24], eax
push eax
push 0xbba084
push 1
push ebp
call fcn.007fdcc0
add esp, 0x10
mov edi, dword [esp + 0x48]
mov ecx, ebp
mov edx, edi
push dword [esp + 0x44]
push dword [esp + 0x68]
push 0
push 0
push esi
call fcn.00815bf0
add esp, 0x14
test eax, eax
jne 0x821339
mov edi, dword [esp + 0xd0]
jmp 0x821577
mov dword [esp + 0x38], eax
add eax, 0x2f0
mov ecx, ebp
mov edx, edi
push 0
push eax
call fcn.0081e830
add esp, 8
mov eax, dword [esp + 0xc8]
mov edi, dword [esp + 0xd0]
mov esi, dword [esp + 0x28]
test byte [eax + 0x28], 0x10
je 0x821386
mov ecx, dword [esp]
mov edx, 0xc
push dword [esp + 0x5c]
push dword [esp + 0x54]
call fcn.007d10d0
add esp, 8
jmp 0x821514
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
mov ecx, 0xffffffff
mov eax, dword [eax + 0xc]
dec eax
cmp ebx, eax
cmove ebx, ecx
cmp byte [edx + 0x24], 0
js 0x8213df
mov ebp, dword [esp]
mov ecx, ebp
push dword [esp + 0x4c]
push 0xffffffffffffffff
push esi
call fcn.007fc460
add esp, 0xc
mov ecx, ebp
mov edx, 0x2d
push ebx
push dword [esp + 0x50]
mov ebx, dword [esp + 0x5c]
push 0
push dword [esp + 0x64]
call fcn.0078dfd0
add esp, 0x10
mov esi, eax
jmp 0x8214eb
mov ecx, edx
mov dword [esp + 0x68], ebx
call fcn.00792930
movzx ebx, word [eax + 0x32]
mov ecx, ebp
mov edi, eax
mov edx, ebx
call fcn.007fa700
mov ecx, dword [esp]
test ebx, ebx
mov dword [esp + 0x20], eax
je 0x821444
xor ebp, ebp
mov dword [esp + 0x30], edi
mov edx, dword [edi + 4]
mov edi, esi
mov esi, ebx
lea ebx, [ebp + eax]
movsx edx, word [edx + ebp*2]
mov dword [esp + 8], edx
mov edx, dword [esp + 0x14]
push ebx
mov ebx, esi
mov esi, edi
mov edi, dword [esp + 0x34]
push dword [esp + 0xc]
push esi
call fcn.007fc460
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x2c]
add esp, 0xc
inc ebp
cmp ebp, ebx
jne 0x82140a
mov esi, dword [esp + 0x68]
test esi, esi
jne 0x82145a
mov ebp, dword [esp + 0x20]
mov dword [esp + 8], 0
jmp 0x82147e
mov ecx, dword [esp]
mov edx, 0x1e
push ebx
mov ebp, dword [esp + 0x24]
push ebp
push 0
push dword [esp + 0x64]
call fcn.0078dfd0
add esp, 0x10
test esi, esi
mov dword [esp + 8], eax
js 0x8214ca
mov edi, dword [esp]
mov esi, dword [esp + 0x4c]
mov edx, 0x5b
mov ecx, edi
push esi
push ebx
push ebp
call fcn.007d10f0
add esp, 0xc
mov eax, ebp
mov ebp, ebx
mov ecx, edi
mov edx, 0x83
push ebx
push eax
push esi
push dword [esp + 0x64]
call fcn.0078dfd0
add esp, 0x10
cmp dword [esp + 0x68], 0
je 0x8214c4
mov ecx, edi
mov edx, 0x10
call fcn.0078e010
mov ebx, ebp
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 4]
mov edx, ebp
push ebx
call fcn.007faa50
add esp, 4
mov edi, dword [esp + 0xd0]
mov ebp, dword [esp]
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 8]
mov ecx, ebp
mov edx, 0xc
push dword [esp + 0x5c]
push dword [esp + 0x54]
call fcn.007d10d0
add esp, 8
mov ebp, dword [esp + 4]
test esi, esi
je 0x821514
mov ecx, dword [esp]
mov edx, esi
call fcn.007f75c0
mov ecx, dword [esp + 0x38]
mov edx, dword [esp + 0xc]
mov eax, 1
test byte [ecx + 0x30], 2
cmovne edx, eax
mov eax, dword [ecx + 0x338]
xor esi, esi
mov dword [esp + 0xc], edx
test byte [eax + 0x25], 2
je 0x821567
cmp dword [esp + 0x10], 0
mov eax, dword [eax + 0x20]
jne 0x821548
mov edx, eax
jmp 0x821550
mov edx, dword [esp + 0x34]
cmp eax, edx
jne 0x821567
mov eax, dword [esp + 0x14]
cmp byte [eax + 0x24], 0
jns 0x821565
mov eax, dword [edx + 0x38]
and eax, 3
cmp eax, 2
je 0x821567
mov esi, edx
call fcn.00817e60
mov ecx, ebp
call fcn.00814fc0
mov dword [esp + 0x34], esi
mov edx, dword [esp + 0x28]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x24]
cmp ecx, dword [esi + 0xc]
jl 0x82118d
mov ecx, ebp
call fcn.00814fc0
mov eax, dword [esp + 0x34]
mov esi, dword [esp + 0xc8]
test eax, eax
mov dword [edi + 0x40], eax
je 0x8215ac
mov eax, dword [esp + 0x44]
mov dword [edi + 8], eax
mov ebp, dword [esp + 0x18]
test ebx, ebx
je 0x8215c6
mov ecx, dword [esp + 0x2c]
mov edx, ebx
mov dword [ebx + 0xc], 0
call fcn.007cb9e0
mov ebx, dword [esp]
mov ecx, ebx
call fcn.007fdcb0
mov edx, dword [esp + 0x70]
mov ecx, ebx
push eax
call fcn.007fdd60
add esp, 4
mov edx, dword [edi + 0xc]
mov ecx, ebx
call fcn.007f7790
mov edx, dword [esp + 0x5c]
mov ecx, ebx
call fcn.007fbd70
cmp byte [esi + 0x2c], 2
jb 0x821607
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x48]
call fcn.00780810
cmp dword [esp + 0xc], 0
je 0x821616
mov ebx, dword [esp + 0x1c]
xor ecx, ecx
jmp 0x821668
mov edx, dword [esp + 0x40]
mov ecx, edi
call fcn.00829730
jmp 0x82160e
test dl, 0x20
je 0x82162e
mov byte [edi + 0x35], 0xad
jmp 0x82165e
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x28]
mov cl, byte [edx + 0xb50664]
movzx edx, byte [edx + 0xb50666]
mov byte [edi + 0x35], cl
mov ecx, dword [esp]
mov dword [edi + 0x38], ebx
push eax
push ebx
call fcn.007d10d0
add esp, 8
inc eax
mov dword [edi + 0x3c], eax
mov byte [edi + 0x37], 1
mov ebp, dword [esp + 0x18]
xor ecx, ecx
mov ebx, dword [esp + 0x1c]
mov dword [esp + 0x10], ecx
cmp ecx, 1
mov ecx, 1
lea eax, [ebx + ebp*8 + 0x2c]
adc ecx, 0
mov dword [esp + 8], eax
mov ebx, dword [esi + 0x5c]
test ebx, ebx
jle 0x8218a2
mov esi, dword [esi + 0x64]
mov ebp, dword [esp + 4]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], 0
movzx eax, word [esi + 0xa]
test al, 6
jne 0x8217a7
mov ecx, dword [edi + 0x50]
mov edx, dword [edi + 0x54]
and edx, dword [esi + 0x2c]
and ecx, dword [esi + 0x28]
or ecx, edx
je 0x8216c9
mov eax, dword [esp + 0xc8]
or byte [eax + 0x30], 2
jmp 0x8217a7
mov ecx, dword [esp + 8]
mov edi, dword [esi]
test byte [ecx], 8
je 0x8216de
test byte [edi + 4], 1
je 0x8217a0
mov ecx, dword [esp + 0x18]
cmp ecx, 1
jne 0x821716
mov eax, dword [esp + 0xd0]
mov ecx, edi
mov edx, dword [eax + 4]
push dword [esp + 0x10]
call fcn.00826ac0
add esp, 4
test eax, eax
jne 0x821710
mov dword [esp + 0x1c], 2
jmp 0x8217a0
movzx eax, word [esi + 0xa]
jmp 0x82171b
cmp ecx, 2
jg 0x821736
test eax, 0x1000
je 0x821736
mov ecx, dword [esp + 0x1c]
mov eax, 3
test ecx, ecx
cmove ecx, eax
mov dword [esp + 0x1c], ecx
jmp 0x8217a0
test eax, 0x200
je 0x82174b
mov eax, dword [esp + 0xd0]
mov eax, dword [eax + 0x2c]
test eax, eax
jne 0x82175d
push 0x10
push dword [esp + 0x64]
push edi
push ebp
call fcn.007fc0d0
add esp, 0x10
jmp 0x82179c
mov ecx, dword [esp]
mov ebp, eax
and eax, 1
shr ebp, 1
lea edx, [eax + eax + 0x12]
push ebp
mov ebp, dword [esp + 8]
call fcn.007f9600
add esp, 4
mov dword [esp + 0x2c], eax
push 0x10
push dword [esp + 0x64]
push edi
push ebp
call fcn.007fc0d0
mov edx, dword [esp + 0x3c]
add esp, 0x10
test edx, edx
je 0x82179c
mov ecx, dword [esp]
call fcn.007f75c0
or byte [esi + 0xa], 4
mov edi, dword [esp + 0xd0]
add esi, 0x30
dec ebx
jg 0x82169d
mov ecx, dword [esp + 0x1c]
mov esi, dword [esp + 0xc8]
test ecx, ecx
jg 0x82167f
mov ebx, dword [esi + 0x5c]
test ebx, ebx
jle 0x8218a2
mov ebp, dword [esi + 0x64]
test byte [ebp + 0xa], 6
jne 0x821898
movzx eax, word [ebp + 0xc]
test al, 0x82
je 0x821898
and eax, 0x800
je 0x821898
mov eax, dword [esp + 0x28]
cmp dword [ebp + 0x14], eax
jne 0x821898
mov eax, dword [esp + 8]
test byte [eax], 8
jne 0x821898
mov eax, dword [ebp]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x28]
mov dword [esp + 0x1c], eax
push 0
push 0x83
push dword [esp + 0xe0]
push dword [esp + 0xe0]
push dword [ebp + 0x1c]
call fcn.00823f30
add esp, 0x14
test eax, eax
je 0x821898
test byte [eax + 0xa], 4
jne 0x821898
test byte [eax + 0xc], 1
jne 0x821850
mov esi, dword [eax]
jmp 0x821863
mov esi, dword [eax]
test byte [esi + 5], 8
je 0x821863
mov eax, dword [esi + 0x14]
mov eax, dword [eax + 0x1c]
cmp dword [eax], 1
jg 0x821898
lea edx, [esp + 0x74]
mov ecx, 0xd
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov edi, dword [esp + 0xd0]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x80], eax
push 0x10
push dword [esp + 0x64]
push edx
push dword [esp + 0x10]
call fcn.007fc0d0
add esp, 0x10
add ebp, 0x30
dec ebx
jg 0x8217d2
mov esi, dword [edi]
mov ebx, dword [esp + 4]
test esi, esi
je 0x821936
mov edi, dword [esp]
mov ecx, edi
call fcn.007fdcb0
mov ecx, dword [esp + 0xd0]
mov edx, 0x45
mov dword [ecx + 0x1c], eax
mov ecx, edi
push esi
push 1
call fcn.007d10d0
add esp, 8
mov eax, dword [esp + 0xc8]
mov eax, dword [eax + 0x5c]
test eax, eax
jle 0x821936
mov ecx, dword [esp + 0xc8]
xor edi, edi
mov esi, dword [ecx + 0x64]
test byte [esi + 0xa], 6
jne 0x82192e
mov ecx, dword [esp + 0xd0]
mov edx, ecx
mov ecx, dword [ecx + 0x50]
mov edx, dword [edx + 0x54]
and ecx, dword [esi + 0x28]
and edx, dword [esi + 0x2c]
or ecx, edx
jne 0x82192e
push 0x10
push dword [esp + 0x64]
push dword [esi]
push ebx
call fcn.007fc0d0
add esp, 0x10
mov eax, dword [esp + 0xc8]
or byte [esi + 0xa], 4
mov eax, dword [eax + 0x5c]
inc edi
add esi, 0x30
cmp edi, eax
jl 0x8218f0
mov eax, dword [esp + 0xd0]
mov edi, dword [eax + 0x50]
mov esi, dword [eax + 0x54]
mov ecx, dword [esp + 0xb0]
xor ecx, esp
call fcn.00989fe9
mov eax, edi
mov edx, esi
add esp, 0xb4
pop esi
pop edi
pop ebx
pop ebp
ret