Function at 0x7c3eb0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push ebp
push edi
push esi
mov esi, eax
push ebx
sub esp, 0x8c
mov ebx, dword [edx]
mov eax, dword [ebx]
mov dword [esp + 0x14], eax
mov eax, dword [eax]
mov dword [esp + 0x18], eax
movzx eax, byte [eax + 0x51]
mov byte [esp + 0x2b], al
test al, al
jne 0x7c3fcd
lea eax, [ecx + ecx*2]
mov dword [esp + 0xc], edx
shl eax, 4
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x10], eax
add eax, dword [edx + 0x14]
mov edi, eax
lea eax, [ebx + 0x1e8]
mov dword [esp + 0x24], esi
mov ebp, dword [edi]
mov dword [esp + 8], eax
mov edx, dword [ebp + 0xc]
test edx, edx
je 0x7c3fe0
call fcn.007798d0
movzx esi, byte [ebp]
mov dword [esp + 0x1c], eax
mov eax, esi
mov dword [esp + 0x20], edx
mov byte [esp + 0x38], al
cmp esi, 0x31
je 0x7c4003
cmp esi, 0x32
je 0x7c4230
mov ecx, dword [ebp + 0x10]
xor eax, eax
xor edx, edx
test ecx, ecx
je 0x7c3f4b
mov eax, dword [esp + 8]
mov edx, ecx
call fcn.007798d0
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
mov dword [ebx + 0x1e8], 0
mov eax, dword [esp + 8]
mov edx, ebp
call fcn.007798d0
mov dword [esp], eax
mov eax, dword [ebx + 0x1e8]
mov dword [esp + 4], edx
test eax, eax
je 0x7c3f7d
or word [edi + 0xa], 0x1000
test byte [ebp + 4], 1
je 0x7c4040
mov eax, dword [ebx + 0x1ec]
movsx edx, word [ebp + 0x24]
test eax, eax
jle 0x7c3fb9
cmp edx, dword [ebx + 0x1f0]
je 0x7c4fe4
xor ecx, ecx
jmp 0x7c3fb2
cmp edx, dword [ebx + ecx*4 + 0x1f0]
je 0x7c4243
add ecx, 1
cmp ecx, eax
jne 0x7c3fa5
sub esp, 8
push str.ON_clause_references_tables_to_its_right
push dword [esp + 0x20]
call fcn.0078f9f0
add esp, 0x10
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
movzx esi, byte [ebp]
mov dword [esp + 0x1c], 0
mov dword [esp + 0x20], 0
mov eax, esi
mov byte [esp + 0x38], al
cmp esi, 0x31
jne 0x7c3f2c
mov eax, dword [esp + 0x14]
mov edx, ebp
call fcn.0078fb30
test eax, eax
jne 0x7c3fcd
mov ecx, dword [ebp + 0x14]
test byte [ebp + 5], 8
jne 0x7c4c36
xor eax, eax
xor edx, edx
test ecx, ecx
je 0x7c3f4b
mov eax, dword [esp + 8]
mov edx, ecx
call fcn.00779ad0
jmp 0x7c3f4b
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
mov eax, dword [esp]
mov edx, dword [esp + 4]
xor ebx, ebx
mov dword [edi + 0x14], 0xffffffff
mov dword [edi + 0x10], 0xffffffff
mov dword [edi + 0x28], eax
mov dword [edi + 0x2c], edx
mov word [edi + 0xc], bx
cmp esi, 0x31
je 0x7c40da
movzx eax, byte [esp + 0x38]
sub eax, 0x2d
cmp al, 0xc
jbe 0x7c40d0
movzx eax, byte [ebp]
cmp al, 0x30
je 0x7c4a70
cmp al, 0x2b
je 0x7c4630
lea esi, [esi]
lea esi, [esi]
mov eax, dword [esp + 0xc]
cmp byte [eax + 8], 0x2c
je 0x7c4294
mov eax, dword [eax + 0x14]
add eax, dword [esp + 0x10]
mov esi, dword [esp + 0x30]
mov edi, dword [esp + 0x34]
or dword [eax + 0x20], esi
or dword [eax + 0x24], edi
add esp, 0x8c
pop ebx
pop esi
pop edi
pop ebp
ret
mov edx, 0x1f21
bt edx, eax
jae 0x7c4082
mov eax, dword [ebp + 0xc]
test eax, eax
jne 0x7c40ea
jmp 0x7c40f0
mov eax, dword [eax + 0xc]
test eax, eax
je 0x7c40f0
test byte [eax + 5], 0x10
jne 0x7c40e3
mov ebx, dword [ebp + 0x10]
test ebx, ebx
jne 0x7c4107
jmp 0x7c410d
mov ebx, dword [ebx + 0xc]
test ebx, ebx
je 0x7c410d
test byte [ebx + 5], 0x10
jne 0x7c4100
mov ecx, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
and ecx, dword [edi + 0x20]
and edx, dword [edi + 0x24]
or edx, ecx
cmp edx, 1
sbb edx, edx
mov ecx, edx
mov edx, dword [edi + 0x18]
and cx, 0x17ff
add cx, 0x800
mov word [esp + 0x38], cx
test edx, edx
jle 0x7c4147
mov ecx, dword [eax + 0x14]
lea edx, [edx + edx*4 - 5]
lea edx, [ecx + edx*4]
mov eax, dword [edx + 4]
sub esp, 4
push esi
push eax
lea eax, [esp + 0x84]
mov dword [esp + 0x48], eax
push eax
mov edx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
call fcn.00797ef0
add esp, 0x10
test eax, eax
je 0x7c41af
mov eax, dword [esp + 0x78]
mov dword [edi + 0x14], eax
mov eax, dword [esp + 0x7c]
mov dword [edi + 0x1c], eax
mov eax, 1
cmp esi, 0x31
je 0x7c41a6
mov eax, 0x100
cmp esi, 0x32
je 0x7c41a6
mov eax, 0x80
cmp esi, 0x2d
je 0x7c41a6
lea ecx, [esi - 0x35]
mov eax, 2
shl eax, cl
and ax, word [esp + 0x38]
mov word [edi + 0xc], ax
cmp esi, 0x2d
jne 0x7c41ba
or word [edi + 0xa], 0x800
test ebx, ebx
je 0x7c40a0
sub esp, 4
mov edx, dword [edi + 0x20]
mov ecx, dword [edi + 0x24]
push esi
push ebx
push dword [esp + 0x48]
mov eax, dword [esp + 0x34]
call fcn.00797ef0
add esp, 0x10
test eax, eax
je 0x7c40a0
mov eax, dword [edi + 0x14]
test eax, eax
js 0x7c4b63
sub esp, 0xc
xor ecx, ecx
mov edx, ebp
push 0
mov edi, dword [esp + 0x28]
mov eax, edi
call fcn.00779c70
add esp, 0x10
cmp byte [edi + 0x51], 0
mov ebx, eax
mov eax, edi
je 0x7c4460
test ebx, ebx
je 0x7c3fcd
mov edx, ebx
call fcn.00776ad0
jmp 0x7c3fcd
mov dword [edi + 0x20], 0
mov dword [edi + 0x24], 0
jmp 0x7c3f51
xor eax, eax
xor edx, edx
test cl, 0x20
sete al
setne dl
shl eax, cl
shl edx, cl
mov ecx, eax
mov ebx, edx
add ecx, 0xffffffff
adc ebx, 0xffffffff
mov dword [esp + 0x30], ecx
mov dword [esp + 0x34], ebx
mov ebx, dword [esp]
mov ecx, dword [esp + 4]
or ebx, eax
or ecx, edx
mov dword [esp], ebx
mov dword [esp + 4], ecx
mov ecx, dword [esp]
mov ebx, dword [esp + 4]
shrd ecx, ebx, 1
shr ebx, 1
cmp ecx, eax
sbb ebx, edx
jb 0x7c4050
jmp 0x7c3fb9
cmp byte [ebp], 0xa9
jne 0x7c4365
mov eax, dword [ebp + 0x14]
test eax, eax
je 0x7c4365
mov esi, dword [esp + 0x14]
sub esp, 8
mov ebx, dword [eax]
mov edx, dword [ebp + 8]
mov esi, dword [esi]
mov ecx, ebx
mov dword [esp + 0x58], esi
mov eax, esi
push 0
push 1
call fcn.0076b740
add esp, 0x10
test eax, eax
je 0x7c4a5e
mov esi, dword [eax + 4]
mov dword [esp + 0x48], esi
and esi, 4
je 0x7c4a5e
mov edx, dword [ebp + 0x14]
cmp ebx, 2
jg 0x7c5040
mov byte [esp + 0x77], 0
mov eax, dword [eax + 8]
movzx ecx, word [eax]
mov word [esp + 0x74], cx
movzx eax, byte [eax + 2]
mov byte [esp + 0x76], al
mov ebx, dword [edx + 4]
test ebx, ebx
jne 0x7c431e
jmp 0x80aecc
mov ebx, dword [ebx + 0xc]
test ebx, ebx
je 0x80aecc
test byte [ebx + 5], 0x10
jne 0x7c4313
mov eax, dword [edx + 0x18]
mov dword [esp + 0x40], 0
mov dword [esp + 0x58], eax
movzx eax, byte [ebx]
mov dword [esp + 0x44], eax
cmp eax, 0x99
je 0x7c4cf6
cmp dword [esp + 0x44], 0x73
je 0x7c4d5f
mov eax, dword [esp + 0x40]
call fcn.007680b0
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + 8]
cmp al, 0x2c
jne 0x7c43b5
movzx eax, byte [ebp]
cmp al, 0xa9
je 0x7c4b78
lea edx, [eax - 0x33]
cmp dl, 1
jbe 0x7c489e
cmp al, 0xa8
je 0x7c489e
lea edx, [eax - 0x2d]
and edx, 0xf7
jne 0x7c43b1
mov edx, dword [ebp + 0xc]
movzx ecx, byte [edx]
cmp cl, 0xad
jne 0x7c439f
movzx ecx, byte [edx + 2]
cmp cl, 0xae
je 0x7c4f2f
cmp cl, 0x88
je 0x7c47d3
cmp al, 0x31
je 0x7c43c0
mov eax, dword [esp + 0xc]
jmp 0x7c40ae
mov ebx, dword [edi + 0x18]
test ebx, ebx
jne 0x7c43b5
mov eax, dword [ebp + 0xc]
movzx edx, byte [eax]
cmp dl, 0xae
jne 0x7c43b5
mov ecx, dword [ebp + 0x14]
mov edi, dword [ecx + 0x34]
test edi, edi
jne 0x7c43b5
mov esi, dword [ecx + 0x44]
test esi, esi
jne 0x7c43b5
mov edi, dword [esp + 0xc]
cmp dl, 0xae
je 0x7c5c4a
mov ecx, 1
cmp dl, 0x88
jne 0x7c4402
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax]
cmp ecx, ebx
jle 0x7c43b5
mov ecx, 2
mov edx, ebp
mov eax, edi
add ebx, 1
call fcn.007770e0
mov edx, dword [edi + 0x14]
lea esi, [eax + eax*2]
mov ecx, eax
mov eax, dword [esp + 0x24]
shl esi, 4
mov dword [edx + esi + 0x18], ebx
mov edx, edi
call fcn.007c3eb0
mov eax, dword [edi + 0x14]
mov edx, dword [esp + 0x2c]
add esi, eax
add eax, dword [esp + 0x10]
mov dword [esi + 0x10], edx
movzx edx, word [eax + 8]
mov word [esi + 8], dx
add byte [eax + 0xe], 1
mov eax, dword [ebp + 0xc]
movzx edx, byte [eax]
cmp dl, 0xad
jne 0x7c43e7
movzx edx, byte [eax + 2]
jmp 0x7c43e7
mov edi, dword [esp + 0xc]
mov ecx, 3
mov edx, ebx
mov eax, edi
call fcn.007770e0
test eax, eax
je 0x7c3fcd
mov edx, dword [edi + 0x14]
lea edi, [eax + eax*2]
mov eax, dword [esp + 0x2c]
shl edi, 4
add edi, edx
mov dword [edi + 0x10], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x3c], edi
add eax, edx
movzx edx, word [eax + 8]
mov word [edi + 8], dx
add byte [eax + 0xe], 1
cmp esi, 0x2d
jne 0x7c44ad
or word [edi + 0xa], 0x800
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
mov edx, dword [ebx + 0xc]
add edi, dword [eax + 0x14]
mov eax, dword [esp + 0x14]
or word [edi + 0xa], 8
mov eax, dword [eax]
movzx eax, word [eax + 0x4c]
and ax, 0x80
mov word [esp + 0x40], ax
jne 0x7c51a6
movzx eax, byte [ebx]
sub eax, 0x2d
test al, 0xf7
jne 0x7c4560
test byte [ebx + 4], 1
jne 0x7c4560
mov eax, edx
call fcn.00762980
mov byte [esp + 0x44], al
mov eax, dword [ebx + 0x10]
call fcn.00762980
movzx edx, byte [esp + 0x44]
cmp dl, al
je 0x7c4516
cmp dl, 0x42
jle 0x7c5bce
cmp al, 0x42
jle 0x7c5bce
mov esi, dword [esp + 0x14]
mov edx, ebx
mov eax, esi
call fcn.007940b0
test eax, eax
je 0x7c4545
cmp dword [eax + 0xc], 0x766960
je 0x7c4545
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0xc]
mov eax, esi
call fcn.00794bf0
test eax, eax
je 0x7c5bce
mov eax, 0x800
or word [edi + 0xc], 0x800
mov edx, dword [ebx + 0xc]
mov word [esp + 0x40], ax
lea esi, [esi]
nop
cmp byte [edx], 0xae
mov ecx, dword [ebx + 0x10]
je 0x7c4595
cmp byte [ecx], 0xae
je 0x7c4595
mov esi, dword [esp + 0x14]
mov eax, esi
call fcn.00794060
mov ecx, dword [ebx + 0xc]
mov edx, dword [ebx + 0x10]
mov dword [esp + 0x44], eax
mov eax, esi
call fcn.00794060
mov ecx, dword [ebx + 0x10]
mov edx, dword [ebx + 0xc]
cmp dword [esp + 0x44], eax
je 0x7c459c
xor dword [ebx + 4], 0x200
mov dword [ebx + 0x10], edx
movzx edx, byte [ebx]
mov dword [ebx + 0xc], ecx
cmp dl, 0x35
jbe 0x7c45b5
sub edx, 0x36
xor edx, 2
add edx, 0x36
mov byte [ebx], dl
mov eax, dword [esp + 0x78]
mov esi, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov dword [esi + 0x14], eax
mov eax, dword [esp + 0x7c]
mov dword [esi + 0x1c], eax
mov eax, dword [esp + 0x1c]
or eax, ecx
mov ecx, dword [esp]
mov dword [esi + 0x20], eax
mov eax, dword [esp + 0x20]
mov dword [esi + 0x28], ecx
movzx ecx, dl
or eax, ebx
mov ebx, dword [esp + 4]
mov dword [esi + 0x24], eax
mov eax, 1
mov dword [esi + 0x2c], ebx
cmp dl, 0x31
je 0x7c4619
mov eax, 0x100
cmp ecx, 0x32
je 0x7c4619
mov eax, 0x80
cmp ecx, 0x2d
je 0x7c4619
sub ecx, 0x35
mov eax, 2
shl eax, cl
mov esi, dword [esp + 0x3c]
add ax, word [esp + 0x40]
and ax, word [esp + 0x38]
mov word [esi + 0xc], ax
jmp 0x7c40a0
mov esi, dword [esp + 0xc]
mov edx, 0x1a0
xor ecx, ecx
mov ebx, dword [esi]
mov edi, esi
mov esi, dword [esp + 0x10]
add esi, dword [edi + 0x14]
mov eax, dword [ebx]
mov edi, dword [esi]
mov dword [esp + 0x54], esi
mov dword [esp + 0x64], ebx
mov dword [esp + 0x5c], eax
mov eax, dword [eax]
mov dword [esp + 0x60], edi
mov edi, esi
mov dword [esp + 0x50], eax
call fcn.00769450
mov dword [esp + 0x3c], eax
mov esi, eax
mov dword [edi + 0x1c], eax
test eax, eax
je 0x7c4ce6
or word [edi + 0xa], 0x10
lea edx, [eax + 0x18]
lea edi, [eax + 0x1c]
and edi, 0xfffffffc
mov ecx, edx
mov dword [eax + 0x18], 0
mov dword [eax + 0x194], 0
sub ecx, edi
xor eax, eax
add ecx, 0x180
shr ecx, 2
rep stosd dword es:[edi], eax
mov dword [esi], ebx
mov eax, esi
mov ecx, 0x2b
mov dword [esi + 0x14], edx
mov byte [esi + 9], 0
mov edx, dword [esp + 0x60]
mov dword [esi + 4], 0
mov dword [esi + 0xc], 0
mov dword [esi + 0x10], 8
call fcn.00777290
mov eax, dword [esi + 0xc]
mov ebx, eax
sub ebx, 1
js 0x7c559a
mov edi, dword [esp + 0x24]
lea esi, [esi]
nop
mov ecx, ebx
mov edx, esi
mov eax, edi
sub ebx, 1
call fcn.007c3eb0
cmp ebx, 0xffffffff
jne 0x7c46f0
mov eax, dword [esp + 0x50]
cmp byte [eax + 0x51], 0
jne 0x7c4ce6
mov esi, dword [esp + 0x3c]
mov eax, dword [esi + 0xc]
mov ebx, dword [esi + 0x14]
mov edi, eax
sub edi, 1
mov dword [esp], edi
js 0x7c55a8
mov dword [esp + 0x40], 0xffffffff
mov esi, dword [esp + 0x64]
mov dword [esp + 0x44], 0xffffffff
mov dword [esp + 0x20], 0xffffffff
mov dword [esp + 0x38], 0xffffffff
mov dword [esp + 0x68], ebp
jmp 0x7c477d
movzx ebp, word [ebx + 0xa]
test ebp, 8
je 0x7c4f39
mov eax, dword [esp + 0x20]
or eax, dword [esp + 0x38]
setne al
and al, byte [esp + 0x1c]
add ebx, 0x30
test al, al
je 0x7c52fc
sub dword [esp], 1
mov eax, dword [esp]
movzx edx, word [ebx + 0xc]
not eax
shr eax, 0x1f
mov dword [esp + 0x1c], eax
test dx, 0x1ff
jne 0x7c4753
mov eax, dword [esp + 0x50]
mov edx, 0x198
xor ecx, ecx
call fcn.00769310
mov ebp, eax
test eax, eax
jne 0x7c506d
mov eax, dword [esp + 0x20]
or eax, dword [esp + 0x38]
mov dword [esp + 0x40], 0
setne al
mov dword [esp + 0x44], 0
and al, byte [esp + 0x1c]
jmp 0x7c4772
mov ecx, dword [edx + 0x14]
mov ecx, dword [ecx + 0x1c]
mov esi, dword [ecx]
cmp esi, 1
jle 0x7c43b1
mov ebx, dword [ebp + 0x10]
movzx ecx, byte [ebx]
cmp cl, 0xad
jne 0x7c47f3
movzx ecx, byte [ebx + 2]
cmp cl, 0xae
je 0x7c51dd
cmp cl, 0x88
jne 0x7c43b1
mov ecx, dword [ebx + 0x14]
mov ecx, dword [ecx + 0x1c]
mov ecx, dword [ecx]
cmp esi, ecx
jne 0x7c43b1
test byte [edx + 5], 8
je 0x7c4825
test byte [ebx + 5], 8
jne 0x7c43b1
mov dword [esp], esi
mov ebx, dword [esp + 0x14]
xor edi, edi
mov ecx, edi
mov eax, ebx
call fcn.00790490
mov edx, dword [ebp + 0x10]
mov ecx, edi
mov esi, eax
mov eax, ebx
call fcn.00790490
sub esp, 0xc
movzx edx, byte [ebp]
mov ecx, esi
push eax
mov eax, ebx
call fcn.007903a0
add esp, 0x10
test eax, eax
je 0x7c486e
mov edx, dword [ebp + 4]
and edx, 1
or dword [eax + 4], edx
movzx edx, word [ebp + 0x24]
mov word [eax + 0x24], dx
mov esi, dword [esp + 0xc]
mov edx, eax
mov ecx, 1
add edi, 1
mov eax, esi
call fcn.007770e0
mov edx, esi
mov ecx, eax
mov eax, dword [esp + 0x24]
call fcn.007c3eb0
cmp edi, dword [esp]
je 0x7c51b2
mov edx, dword [ebp + 0xc]
jmp 0x7c482e
mov ebx, dword [ebp + 0xc]
xor ecx, ecx
mov esi, dword [ebp + 0x10]
cmp byte [ebx], 0xa4
jne 0x7c48b8
mov edx, dword [ebx + 0x2c]
xor ecx, ecx
mov edx, dword [edx + 0x38]
test edx, edx
setne cl
test esi, esi
je 0x7c48c5
cmp byte [esi], 0xa4
je 0x7c5171
cmp al, 0x34
je 0x7c5012
cmp al, 0xa8
je 0x7c5000
movzx edx, byte [esp + 0x2b]
cmp al, 0x33
mov eax, 0x46
mov dword [esp + 0x20], ebp
mov ebp, edi
mov edi, ecx
cmove edx, eax
mov byte [esp + 0x2b], dl
jmp 0x7c492c
mov eax, dword [esp + 8]
mov edx, esi
call fcn.007798d0
mov dword [esp], eax
mov dword [esp + 0x1c], edx
test ebx, ebx
je 0x7c4a10
mov eax, dword [esp + 8]
mov edx, ebx
call fcn.007798d0
and eax, dword [esp]
and edx, dword [esp + 0x1c]
or edx, eax
je 0x7c4a10
mov eax, esi
mov esi, ebx
mov ebx, eax
sub edi, 1
cmp edi, 0xffffffff
je 0x7c4c2e
test esi, esi
jne 0x7c48f2
test ebx, ebx
je 0x7c494b
mov eax, dword [esp + 8]
mov edx, ebx
call fcn.007798d0
mov dword [esp], 0
xor eax, eax
mov dword [esp + 0x1c], 0
sub esp, 0xc
xor ecx, ecx
mov edx, 0x2e
push eax
mov eax, dword [esp + 0x24]
call fcn.007903a0
add esp, 0x10
test eax, eax
je 0x7c498d
mov edx, dword [esp + 0x20]
test byte [edx + 4], 1
je 0x7c498d
movzx edx, word [edx + 0x24]
or dword [eax + 4], 1
mov word [eax + 0x24], dx
mov ebp, dword [esp + 0xc]
mov edx, eax
mov ecx, 3
mov eax, ebp
call fcn.007770e0
mov edx, dword [ebp + 0x14]
mov ecx, dword [esp]
lea eax, [eax + eax*2]
shl eax, 4
add eax, edx
add edx, dword [esp + 0x10]
mov dword [eax + 0x20], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 0x24], ecx
mov ecx, dword [ebx + 0x1c]
mov dword [eax + 0x14], ecx
movsx ecx, word [ebx + 0x20]
mov dword [eax + 0x1c], ecx
mov ecx, pe_nt_image_headers32
mov word [eax + 0xc], cx
movzx ecx, byte [esp + 0x2b]
mov byte [eax + 0xf], cl
mov ecx, dword [esp + 0x2c]
mov dword [eax + 0x10], ecx
movzx ecx, word [edx + 8]
mov word [eax + 8], cx
add byte [edx + 0xe], 1
mov edx, ebp
mov ebp, dword [esp + 0x10]
add ebp, dword [edx + 0x14]
mov edx, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x2c]
or word [ebp + 0xa], 8
mov dword [eax + 0x28], edx
mov dword [eax + 0x2c], ecx
jmp 0x7c4926
sub esp, 0xc
xor ecx, ecx
mov edx, esi
push 0
mov eax, dword [esp + 0x28]
call fcn.00779c70
add esp, 0x10
jmp 0x7c495c
lea edx, [esi + esi*2]
movzx ecx, word [edi + 8]
mov esi, dword [esp + 0x2c]
shl edx, 4
add edx, eax
mov word [edx + 8], cx
lea ecx, [ebx + ebx*2]
mov dword [edx + 0x10], esi
shl ecx, 4
movzx edx, byte [edi + 0xe]
add eax, ecx
movzx ecx, word [edi + 8]
add edx, 2
mov dword [eax + 0x10], esi
mov word [eax + 8], cx
mov byte [edi + 0xe], dl
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + 8]
jmp 0x7c4361
mov eax, dword [esp + 0xc]
cmp byte [eax + 8], 0x2c
jne 0x7c40ae
mov eax, dword [ebp + 0x14]
mov edi, 0x39
mov dword [esp], 0
lea esi, [eax + 4]
mov ebx, dword [esi]
test ebx, ebx
je 0x7c4aad
sub esp, 0xc
mov edx, ebx
xor ecx, ecx
push 0
mov eax, dword [esp + 0x28]
call fcn.00779c70
add esp, 0x10
mov ebx, eax
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x7c4ac9
sub esp, 0xc
mov edx, eax
xor ecx, ecx
push 0
mov eax, dword [esp + 0x28]
call fcn.00779c70
add esp, 0x10
sub esp, 0xc
mov ecx, edi
push ebx
movzx edx, cl
mov ecx, eax
mov eax, dword [esp + 0x24]
call fcn.007903a0
add esp, 0x10
test eax, eax
je 0x7c4af5
mov edx, dword [ebp + 4]
and edx, 1
or dword [eax + 4], edx
movzx edx, word [ebp + 0x24]
mov word [eax + 0x24], dx
mov edi, dword [esp + 0xc]
mov edx, eax
mov ecx, 3
add esi, 0x14
mov eax, edi
call fcn.007770e0
mov edx, edi
mov ebx, eax
mov ecx, eax
mov eax, dword [esp + 0x24]
call fcn.007c3eb0
mov edx, dword [edi + 0x14]
mov eax, dword [esp + 0x10]
lea edi, [edx + eax]
lea eax, [ebx + ebx*2]
mov ebx, dword [esp + 0x2c]
shl eax, 4
add eax, edx
movzx edx, word [edi + 8]
mov dword [eax + 0x10], ebx
mov word [eax + 8], dx
add byte [edi + 0xe], 1
cmp dword [esp], 1
je 0x7c40a0
mov ebx, dword [esi]
mov edi, 0x37
mov dword [esp], 1
test ebx, ebx
jne 0x7c4a96
jmp 0x7c4aad
xor eax, eax
mov edx, dword [ebp + 0xc]
mov ebx, ebp
mov dword [esp + 0x3c], edi
mov word [esp + 0x40], ax
jmp 0x7c4560
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
test eax, eax
je 0x7c43b5
mov eax, dword [esp]
cmp dword [eax], 2
jne 0x7c43b5
mov eax, dword [esp]
mov ebx, dword [eax + 0x18]
cmp byte [ebx], 0xa4
je 0x7c51e7
mov eax, dword [esp]
mov ebx, dword [eax + 4]
cmp byte [ebx], 0xa4
jne 0x7c43b5
mov eax, dword [ebx + 0x2c]
mov ecx, dword [eax + 0x38]
test ecx, ecx
je 0x7c43b5
mov eax, dword [eax + 0x40]
test eax, eax
je 0x80aec5
mov esi, dword [esp + 0x18]
cmp esi, dword [eax]
je 0x7c4be2
mov edx, esi
mov eax, dword [eax + 0x18]
test eax, eax
je 0x80aec5
cmp edx, dword [eax]
jne 0x7c4bd3
mov eax, dword [eax + 8]
mov edx, dword [eax]
mov ecx, dword [edx + 0x48]
test ecx, ecx
je 0x7c4c17
sub esp, 0xc
lea edx, [esp + 0x84]
push edx
lea edx, [esp + 0x84]
push edx
push dword [ebp + 8]
push 2
push eax
call ecx
add esp, 0x20
cmp eax, 0x95
jg 0x7c5d43
mov eax, dword [esp + 0xc]
cmp byte [eax + 8], 0x2c
jne 0x7c40ae
movzx eax, byte [ebp]
jmp 0x7c4385
mov edi, ebp
mov ebp, dword [esp + 0x20]
jmp 0x7c4c17
mov eax, dword [esp + 8]
mov edx, ecx
call fcn.00779b30
mov dword [edi + 0x20], eax
mov dword [edi + 0x24], edx
jmp 0x7c3f51
mov dword [esp], ebp
mov ebp, dword [esp + 0x64]
xor eax, eax
xor edi, edi
test byte [ebx + 0xa], 0x40
je 0x7c4c90
mov eax, dword [ebx]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x7c4c7b
sub esp, 0xc
mov edx, eax
xor ecx, ecx
push 0
mov eax, dword [esp + 0x60]
call fcn.00779c70
add esp, 0x10
mov ecx, eax
mov eax, dword [ebp]
mov edx, edi
mov eax, dword [eax]
call fcn.00785370
mov edi, eax
mov eax, dword [ebx]
mov eax, dword [eax + 0xc]
sub esi, 1
add ebx, 0x30
cmp esi, 0xffffffff
jne 0x7c4c57
mov ebp, dword [esp]
test eax, eax
je 0x7c4cb7
sub esp, 0xc
mov edx, eax
xor ecx, ecx
push 0
mov eax, dword [esp + 0x60]
call fcn.00779c70
add esp, 0x10
sub esp, 0xc
mov ecx, eax
mov edx, 0x31
push 0
mov eax, dword [esp + 0x6c]
call fcn.007903a0
add esp, 0x10
test eax, eax
jne 0x7c5cc9
test edi, edi
je 0x7c4ce6
mov eax, dword [esp + 0x50]
mov edx, edi
call fcn.00776b80
mov eax, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
add edi, dword [eax + 0x14]
jmp 0x7c40a0
mov eax, dword [esp + 0x50]
test byte [eax + 0x22], 0x80
jne 0x7c4350
mov eax, dword [esp + 0x14]
movsx esi, word [ebx + 0x20]
mov eax, dword [eax + 0xdc]
mov edx, esi
call fcn.0078ed70
mov dword [esp + 0x40], eax
test eax, eax
je 0x7c4d39
mov eax, dword [esp + 0x40]
movzx eax, word [eax + 8]
and eax, 0x3f
cmp byte [eax + 0xbf5720], 3
je 0x7c5bd6
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 8]
mov eax, dword [edx + 0xd4]
cmp esi, 0x1f
jle 0x7c52d7
or eax, 0x80000000
mov dword [edx + 0xd4], eax
jmp 0x7c4350
mov eax, dword [ebx + 8]
mov dword [esp + 0x3c], eax
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x7c4350
movzx eax, byte [esp + 0x74]
mov dword [esp + 0x54], ebx
xor edx, edx
mov ebx, esi
mov byte [esp], al
movzx eax, byte [esp + 0x75]
mov byte [esp + 0x20], al
movzx eax, byte [esp + 0x76]
mov byte [esp + 0x38], al
movzx eax, byte [esp + 0x77]
mov byte [esp + 0x1c], al
movzx eax, byte [esi]
mov byte [esp + 0x5c], al
jmp 0x7c4db4
mov eax, ecx
mov edx, esi
test al, al
je 0x7c5024
cmp byte [esp], al
je 0x7c5024
cmp byte [esp + 0x20], al
je 0x7c5024
cmp byte [esp + 0x38], al
je 0x7c5024
lea esi, [edx + 1]
movzx ecx, byte [ebx + edx + 1]
cmp byte [esp + 0x1c], al
jne 0x7c4db0
test cl, cl
je 0x7c4df5
lea esi, [edx + 2]
movzx ecx, byte [ebx + edx + 2]
jmp 0x7c4db0
mov ebx, dword [esp + 0x54]
mov eax, dword [esp + 0x3c]
cmp byte [eax + esi - 1], 0xff
je 0x7c4350
cmp esi, 1
je 0x7c52e8
mov dword [esp + 0x38], 0
cmp byte [esp], cl
jne 0x7c4e31
mov eax, dword [esp + 0x3c]
cmp byte [eax + esi + 1], 0
sete al
movzx eax, al
mov dword [esp + 0x38], eax
mov ecx, dword [esp + 0x3c]
mov eax, dword [esp + 0x50]
mov edx, 0x73
call fcn.00769e70
mov dword [esp + 0x20], eax
test eax, eax
je 0x7c578e
mov edx, dword [eax + 8]
movzx eax, byte [esp + 0x1c]
mov dword [esp + 0x60], ebx
mov dword [esp + 0x64], edi
mov ecx, edx
mov byte [edx + esi], 0
mov dword [esp + 0x54], edx
mov edx, 1
mov dword [esp + 0x1c], eax
mov eax, edx
sub eax, ecx
mov dword [esp + 0x5c], ebp
mov ebp, ecx
mov dword [esp + 0x3c], eax
xor eax, eax
movsx ebx, byte [ebp + eax]
lea edi, [eax + 1]
mov edx, ebx
cmp ebx, dword [esp + 0x1c]
jne 0x7c4e9a
movzx edx, byte [ebp + eax + 1]
lea edi, [eax + 2]
mov eax, dword [esp + 0x3c]
mov ebx, ecx
mov byte [ecx], dl
add eax, ecx
lea ecx, [ecx + 1]
mov dword [esp], eax
mov eax, edi
cmp edi, esi
jl 0x7c4e82
mov eax, dword [esp + 0x54]
mov esi, dword [esp]
mov dword [esp + 0x1c], ebx
mov ebp, dword [esp + 0x5c]
mov ebx, dword [esp + 0x60]
mov byte [eax + esi], 0
mov eax, dword [esp + 0x58]
mov edi, dword [esp + 0x64]
cmp byte [eax], 0xa4
je 0x7c5c54
lea eax, [esp + 0x78]
fldz
sub esp, 0xc
fstp qword [esp + 0x84]
mov edx, eax
mov dword [esp + 0x48], eax
push 1
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x64]
call fcn.0076a9a0
add esp, 0x10
test eax, eax
jle 0x7c5a71
jmp 0x7c4f0c
fstp st(0)
mov edx, dword [esp + 0x20]
mov eax, dword [esp + 0x50]
call fcn.00776ad0
mov eax, dword [esp + 0x40]
call fcn.007680b0
mov eax, dword [esp + 0xc]
movzx eax, byte [eax + 8]
jmp 0x7c4361
mov ecx, dword [edx + 0x14]
mov esi, dword [ecx]
jmp 0x7c47db
mov eax, dword [esi + 0x1ec]
and ebp, 2
mov edi, dword [ebx + 0x14]
mov word [esp + 0x58], bp
test eax, eax
jle 0x7c5c07
mov ecx, dword [esi + 0x1f0]
cmp edi, ecx
mov dword [esp + 0x6c], ecx
mov ecx, 0
jne 0x7c4f7d
jmp 0x7c514f
cmp edi, dword [esi + ecx*4 + 0x1f0]
je 0x7c514a
add ecx, 1
cmp ecx, eax
jne 0x7c4f70
mov word [esp + 0x58], bp
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
cmp word [esp + 0x58], 0
jne 0x7c527e
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x4c]
and dword [esp + 0x20], edi
mov eax, dword [esp + 0x20]
and dword [esp + 0x38], ebp
mov ecx, dword [esp + 0x38]
or eax, ecx
setne al
and al, byte [esp + 0x1c]
and edx, 2
je 0x7c5191
mov edi, dword [esp + 0x48]
mov ebp, dword [esp + 0x4c]
and dword [esp + 0x40], edi
and dword [esp + 0x44], ebp
jmp 0x7c4772
mov eax, 1
xor edx, edx
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], 0
jmp 0x7c4266
mov dword [esp + 0x20], ebp
mov ebp, edi
mov edi, ecx
mov byte [esp + 0x2b], 0x45
jmp 0x7c492c
mov dword [esp + 0x20], ebp
mov ebp, edi
mov edi, ecx
mov byte [esp + 0x2b], 0x44
jmp 0x7c492c
mov ebx, dword [esp + 0x54]
test edx, edx
je 0x7c4350
mov ecx, eax
mov esi, edx
jmp 0x7c4df9
mov ecx, dword [edx + 0x2c]
cmp byte [ecx], 0x73
jne 0x7c4a5e
mov ecx, dword [ecx + 8]
movzx ebx, byte [ecx]
test bl, bl
je 0x7c4a5e
cmp byte [ecx + 1], 0
jne 0x7c4a5e
mov byte [esp + 0x77], bl
jmp 0x7c42f4
lea edx, [eax + 0x18]
mov ecx, 0x400
lea edi, [eax + 0x1c]
mov dword [ebx + 0x1c], eax
mov word [ebx + 0xc], cx
and edi, 0xfffffffc
mov ecx, edx
sub ecx, edi
or word [ebx + 0xa], 0x20
add ecx, 0x180
mov dword [eax + 0x18], 0
mov dword [eax + 0x194], 0
shr ecx, 2
xor eax, eax
rep stosd dword es:[edi], eax
mov ecx, 0x2c
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
mov byte [ebp + 9], 0
mov dword [ebp + 0x14], edx
mov edx, dword [ebx]
mov dword [ebp], eax
mov eax, ebp
mov dword [ebp + 4], 0
mov dword [ebp + 0xc], 0
mov dword [ebp + 0x10], 8
call fcn.00777290
mov edi, dword [ebp + 0xc]
sub edi, 1
js 0x7c5107
mov dword [esp + 0x40], ebx
mov ebx, dword [esp + 0x24]
lea esi, [esi]
mov ecx, edi
mov edx, ebp
mov eax, ebx
sub edi, 1
call fcn.007c3eb0
cmp edi, 0xffffffff
jne 0x7c50f0
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0xc]
mov dword [ebp + 4], eax
mov eax, dword [esp + 0x50]
cmp byte [eax + 0x51], 0
je 0x7c54a3
mov eax, dword [esp + 0x3c]
mov edx, 0x200
mov ebp, dword [esp + 0x68]
mov dword [eax + 0x198], 0
mov dword [eax + 0x19c], 0
mov eax, dword [esp + 0x54]
mov word [eax + 0xc], dx
jmp 0x7c4ce6
mov word [esp + 0x58], bp
mov edi, 1
xor ebp, ebp
shld ebp, edi, cl
shl edi, cl
test cl, 0x20
je 0x7c5164
mov ebp, edi
xor edi, edi
mov dword [esp + 0x48], edi
mov dword [esp + 0x4c], ebp
jmp 0x7c4f99
mov edx, dword [esi + 0x2c]
mov edx, dword [edx + 0x38]
test edx, edx
je 0x7c48c5
mov edx, ecx
add edx, 1
mov ecx, edx
mov edx, ebx
mov ebx, esi
mov esi, edx
jmp 0x7c48c5
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
jmp 0x7c4772
xor esi, esi
mov word [esp + 0x40], si
jmp 0x7c4560
mov esi, dword [esp + 0xc]
mov edi, dword [esp + 0x10]
xor edx, edx
mov eax, dword [esi + 0x14]
add edi, eax
or word [edi + 0xa], 6
mov word [edi + 0xc], dx
cmp byte [esi + 8], 0x2c
jne 0x7c40b1
movzx eax, byte [ebp]
jmp 0x7c43b1
mov ecx, dword [ebx + 0x14]
mov ecx, dword [ecx]
jmp 0x7c480d
mov eax, dword [ebx + 0x2c]
mov esi, dword [eax + 0x38]
test esi, esi
je 0x7c4ba1
mov eax, dword [ebp + 8]
mov dword [esp + 0x1c], 0
mov esi, str.match
mov dword [esp + 0x20], eax
mov eax, 0x6d
mov ecx, dword [esp + 0x20]
jmp 0x7c522c
movzx eax, byte [eax + 0xbfad00]
cmp byte [edx + 0xbfad00], al
jne 0x7c5260
add esi, 1
movzx eax, byte [esi]
add ecx, 1
movzx edx, byte [ecx]
cmp edx, eax
jne 0x7c5214
test edx, edx
jne 0x7c5223
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], ebp
mov ebp, edi
movzx eax, byte [eax*8 + 0xbf52c4]
mov byte [esp + 0x2b], al
mov eax, dword [esp]
mov esi, dword [eax + 4]
mov eax, 1
mov edi, eax
jmp 0x7c492c
add dword [esp + 0x1c], 1
mov eax, dword [esp + 0x1c]
cmp eax, 4
je 0x7c4ba1
mov esi, dword [eax*8 + 0xbf52c0]
movzx eax, byte [esi]
jmp 0x7c520e
mov ecx, dword [ebx + 0x10]
mov edi, dword [esp + 0x3c]
lea ecx, [ecx + ecx*2]
shl ecx, 4
add ecx, dword [edi + 0x14]
mov edi, dword [ecx + 0x14]
xor ecx, ecx
cmp dword [esp + 0x6c], edi
je 0x7c52ad
add ecx, 1
cmp ecx, eax
je 0x7c4fa5
cmp dword [esi + ecx*4 + 0x1f0], edi
jne 0x7c5299
mov ebp, ecx
mov eax, dword [esp + 0x4c]
shr ebp, 5
and ebp, 1
mov edi, ebp
shl ebp, cl
xor edi, 1
or eax, ebp
shl edi, cl
mov ecx, dword [esp + 0x48]
mov dword [esp + 0x4c], eax
or ecx, edi
mov dword [esp + 0x48], ecx
jmp 0x7c4fa5
sub esi, 1
bts eax, esi
mov dword [edx + 0xd4], eax
jmp 0x7c4350
movzx edx, byte [esp + 0x5c]
cmp byte [esp + 0x1c], dl
jne 0x7c4e11
jmp 0x7c4350
mov eax, dword [esp + 0x3c]
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x38]
mov ebp, dword [esp + 0x68]
mov dword [eax + 0x198], esi
mov dword [eax + 0x19c], edi
or edi, esi
je 0x7c5d7e
mov esi, dword [esp + 0x54]
mov edx, 0x200
mov word [esi + 0xc], dx
mov esi, dword [esp + 0xc]
mov byte [esi + 9], 1
cmp dword [eax + 0xc], 2
je 0x7c55ee
mov eax, dword [esp + 0x44]
or eax, dword [esp + 0x40]
je 0x7c4ce6
mov dword [esp + 0x1c], 2
mov dword [esp], 0xffffffff
mov dword [esp + 0x48], ebp
mov ebp, dword [esp + 0x64]
mov eax, dword [esp + 0x3c]
mov ebx, dword [eax + 0x14]
mov eax, dword [eax + 0xc]
mov edi, eax
mov dword [esp + 0x20], eax
sub edi, 1
js 0x7c53bb
and word [ebx + 0xa], 0xffbf
mov esi, dword [ebx + 0x14]
cmp dword [esp], esi
je 0x7c53b0
mov eax, dword [ebp + 0x1ec]
test eax, eax
jle 0x7c53b0
cmp esi, dword [ebp + 0x1f0]
je 0x7c5497
xor ecx, ecx
jmp 0x7c53a9
cmp esi, dword [ebp + ecx*4 + 0x1f0]
je 0x7c53c4
add ecx, 1
cmp ecx, eax
jne 0x7c53a0
sub edi, 1
add ebx, 0x30
cmp edi, 0xffffffff
jne 0x7c5379
mov ebp, dword [esp + 0x48]
jmp 0x7c4ce6
mov eax, 1
xor edx, edx
shld edx, eax, cl
shl eax, cl
test cl, 0x20
je 0x7c53d9
mov edx, eax
xor eax, eax
mov ecx, edx
mov edx, eax
mov eax, dword [esp + 0x40]
and eax, edx
mov edx, dword [esp + 0x44]
and edx, ecx
or edx, eax
je 0x7c53b0
mov eax, dword [ebx + 0x1c]
mov dword [esp], eax
mov eax, dword [ebx]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x38], eax
mov eax, esi
cmp eax, esi
je 0x7c541d
and word [ebx + 0xa], 0xffbf
sub edi, 1
add ebx, 0x30
cmp edi, 0xffffffff
je 0x7c5c90
mov eax, dword [ebx + 0x14]
cmp eax, esi
jne 0x7c5402
mov eax, dword [esp]
cmp eax, dword [ebx + 0x1c]
je 0x7c5440
cmp dword [esp + 0x1c], 1
mov dword [esp], esi
je 0x7c53bb
mov dword [esp + 0x1c], 1
jmp 0x7c5364
cmp dword [esp], 0xfffffffe
mov eax, dword [ebx]
je 0x7c5477
mov eax, dword [eax + 0x10]
call fcn.00762980
movsx edx, al
mov eax, dword [ebx]
mov dword [esp + 0x20], edx
mov eax, dword [eax + 0xc]
call fcn.00762980
mov edx, dword [esp + 0x20]
test edx, edx
je 0x7c5470
movsx eax, al
cmp eax, edx
jne 0x7c5425
or word [ebx + 0xa], 0x40
jmp 0x7c5407
sub esp, 0xc
mov edx, dword [eax + 0xc]
push 0xffffffffffffffff
mov ecx, dword [esp + 0x48]
mov eax, dword [esp + 0x6c]
call fcn.007968c0
add esp, 0x10
test eax, eax
jne 0x7c5425
mov eax, dword [ebx]
jmp 0x7c5448
mov eax, 1
xor edx, edx
jmp 0x7c53d9
mov edi, dword [ebp + 0xc]
mov eax, dword [ebp + 0x14]
mov dword [esp + 0x44], edi
test edi, edi
jle 0x7c511c
xor ebp, ebp
mov dword [esp + 0x48], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x40], esi
jmp 0x7c54e4
cmp word [eax + 0xc], 0x40
je 0x7c54fb
add ebp, 1
add eax, 0x30
cmp ebp, dword [esp + 0x44]
je 0x7c5560
mov edx, dword [eax]
movzx edx, byte [edx]
sub edx, 0x2d
cmp dl, 0xc
ja 0x7c54cd
mov edi, 0x1f31
bt edi, edx
jae 0x7c54cd
mov edi, dword [esp + 0x40]
mov ecx, dword [eax + 0x14]
mov edx, dword [edi + 0x1ec]
test edx, edx
jle 0x7c54d4
cmp ecx, dword [edi + 0x1f0]
mov edi, 0
je 0x7c553a
mov esi, dword [esp + 0x40]
jmp 0x7c5529
cmp ecx, dword [esi + edi*4 + 0x1f0]
je 0x7c5536
add edi, 1
cmp edi, edx
jne 0x7c5520
mov dword [esp + 0x40], esi
jmp 0x7c54d4
mov dword [esp + 0x40], esi
mov ecx, edi
mov esi, 1
xor edi, edi
xor edx, edx
shld edi, esi, cl
shl esi, cl
test cl, 0x20
cmovne edi, esi
cmovne esi, edx
or dword [esp + 0x58], edi
or dword [esp + 0x48], esi
jmp 0x7c54d4
mov edi, dword [esp + 0x48]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x44], 0
and dword [esp + 0x20], edi
mov eax, dword [esp + 0x20]
and dword [esp + 0x38], edx
mov edi, dword [esp + 0x38]
mov esi, dword [esp + 0x40]
mov dword [esp + 0x40], 0
or eax, edi
setne al
and al, byte [esp + 0x1c]
jmp 0x7c4772
mov esi, dword [esp + 0x50]
cmp byte [esi + 0x51], 0
jne 0x7c4ce6
mov esi, dword [esp + 0x3c]
mov ecx, 0x200
mov dword [esp + 0x40], 0xffffffff
mov dword [esp + 0x44], 0xffffffff
mov dword [esi + 0x198], 0xffffffff
mov dword [esi + 0x19c], 0xffffffff
mov esi, dword [esp + 0x54]
mov word [esi + 0xc], cx
mov esi, dword [esp + 0xc]
mov byte [esi + 9], 1
cmp eax, 2
jne 0x7c534d
mov eax, dword [esp + 0x3c]
mov dword [esp], 1
mov dword [esp + 0x1c], ebp
mov ecx, dword [eax + 0x14]
cmp word [ecx + 0xc], 0x400
je 0x7c5762
cmp dword [esp], 1
jne 0x7c5785
mov ebp, ecx
movzx eax, word [ecx + 0x3c]
xor esi, esi
cmp ax, 0x400
je 0x7c5743
test esi, esi
jne 0x7c5759
lea edi, [ecx + 0x30]
test edi, edi
je 0x7c5759
movzx ebx, word [ebp + 0xc]
test bl, 0x3e
je 0x7c573b
movzx edx, word [edi + 0xc]
test dl, 0x3e
je 0x7c573b
or ebx, edx
test bx, 0xffe5
je 0x7c5669
test bx, 0xffd9
jne 0x7c573b
mov eax, dword [edi]
sub esp, 0xc
mov ecx, dword [eax + 0xc]
mov eax, dword [ebp]
mov edx, dword [eax + 0xc]
push 0xffffffffffffffff
xor eax, eax
call fcn.007968c0
add esp, 0x10
test eax, eax
jne 0x7c5730
mov eax, dword [edi]
sub esp, 0xc
mov ecx, dword [eax + 0x10]
mov eax, dword [ebp]
mov edx, dword [eax + 0x10]
push 0xffffffffffffffff
xor eax, eax
call fcn.007968c0
add esp, 0x10
test eax, eax
jne 0x7c5730
movzx eax, bx
lea edx, [eax - 1]
test edx, eax
je 0x7c56c6
and ebx, 0x18
cmp bx, 1
sbb ebx, ebx
and ebx, 0x18
add ebx, 8
mov edx, dword [ebp]
test edx, edx
je 0x7c5730
mov eax, dword [esp + 0xc]
sub esp, 0xc
xor ecx, ecx
mov eax, dword [eax]
mov eax, dword [eax]
push 0
mov eax, dword [eax]
call fcn.00779c70
add esp, 0x10
test eax, eax
je 0x7c5730
movzx edx, bx
cmp bx, 2
je 0x7c5d74
mov ecx, 0x35
lea ebx, [ecx + 1]
mov edi, 2
sub ecx, 0x34
shl edi, cl
mov ecx, ebx
cmp edi, edx
jne 0x7c56fc
mov edi, dword [esp + 0xc]
mov byte [eax], bl
mov edx, eax
mov ecx, 3
mov eax, edi
call fcn.007770e0
mov edx, edi
mov ecx, eax
mov eax, dword [esp + 0x24]
call fcn.007c3eb0
mov eax, dword [esp + 0x3c]
mov ecx, dword [eax + 0x14]
movzx eax, word [ecx + 0x3c]
add esi, 1
jmp 0x7c561e
mov edx, dword [ecx + 0x4c]
cmp esi, dword [edx + 0xc]
jge 0x7c5759
lea edi, [esi + esi*2]
shl edi, 4
add edi, dword [edx + 0x14]
jmp 0x7c5633
add dword [esp], 1
jmp 0x7c5600
mov esi, dword [esp]
mov edx, dword [ecx + 0x1c]
lea eax, [esi - 1]
cmp dword [edx + 0xc], eax
jle 0x7c5785
lea eax, [esi + esi*2]
mov edx, dword [edx + 0x14]
shl eax, 4
lea ebp, [edx + eax - 0x30]
test ebp, ebp
jne 0x7c5618
mov ebp, dword [esp + 0x1c]
jmp 0x7c533f
cmp dword [esp + 0x44], 0x99
je 0x7c5b0e
mov eax, dword [esp + 0x40]
call fcn.007680b0
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
mov dword [esp + 0x1c], 0
lea esi, [esi]
lea esi, [esi]
test byte [esp + 0x48], 8
jne 0x7c5998
mov eax, dword [esp + 0x14]
mov eax, dword [eax]
cmp byte [eax + 0x51], 0
jne 0x7c5833
mov esi, dword [esp + 0x20]
or word [edi + 0xa], 0x400
mov ebx, dword [esi + 8]
movzx eax, byte [ebx]
test al, al
je 0x7c5833
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x3c], ebp
xor ecx, ecx
mov ebp, esi
lea esi, [esi]
nop
movzx esi, al
movzx edx, byte [esi + 0xbfac00]
and edx, 0x20
not edx
and edx, eax
mov byte [ebx], dl
movzx edx, byte [esi + 0xbfad00]
mov eax, dword [edi + 8]
mov byte [eax + ecx], dl
mov ebx, dword [ebp + 8]
add ecx, 1
add ebx, ecx
movzx eax, byte [ebx]
test al, al
jne 0x7c5800
mov ebp, dword [esp + 0x3c]
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x51], 0
jne 0x7c5880
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 8]
test ebx, ebx
je 0x7c5a60
sub esp, 0xc
push ebx
call sub.msvcrt.dll_strlen
add esp, 0x10
and eax, 0x3fffffff
lea edx, [ebx + eax - 1]
movzx eax, byte [edx]
cmp al, 0x40
movzx eax, byte [eax + 0xbfad00]
mov ecx, 0
cmovne ecx, dword [esp + 0x38]
add eax, 1
mov dword [esp + 0x38], ecx
mov byte [edx], al
mov ebx, str.NOCASE
mov edx, dword [esp]
test edx, edx
je 0x7c59d8
sub esp, 0xc
xor ecx, ecx
push 0
mov eax, dword [esp + 0x28]
call fcn.00779c70
mov esi, dword [esp + 0x24]
mov ecx, ebx
mov edx, eax
mov eax, esi
call fcn.00778560
pop edi
push dword [esp + 0x2c]
mov edx, 0x39
mov ecx, eax
mov eax, esi
call fcn.007903a0
add esp, 0x10
test eax, eax
je 0x7c5a3a
mov edx, dword [ebp + 4]
mov ecx, 0x103
and edx, 1
or dword [eax + 4], edx
movzx edx, word [ebp + 0x24]
mov word [eax + 0x24], dx
mov edx, eax
mov edi, dword [esp + 0xc]
mov eax, edi
call fcn.007770e0
mov edx, edi
mov ecx, eax
mov esi, eax
mov eax, dword [esp + 0x24]
call fcn.007c3eb0
sub esp, 0xc
xor ecx, ecx
push 0
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x28]
call fcn.00779c70
mov dword [esp + 0x10], eax
add esp, 0x10
mov edi, dword [esp + 0x14]
mov edx, dword [esp]
mov ecx, ebx
mov eax, edi
call fcn.00778560
sub esp, 0xc
mov edx, 0x38
push dword [esp + 0x28]
mov ecx, eax
mov eax, edi
call fcn.007903a0
add esp, 0x10
test eax, eax
je 0x7c5957
mov edx, dword [ebp + 4]
and edx, 1
or dword [eax + 4], edx
movzx edx, word [ebp + 0x24]
mov word [eax + 0x24], dx
mov edi, dword [esp + 0xc]
mov edx, eax
mov ecx, 0x103
mov eax, edi
call fcn.007770e0
mov edx, edi
mov ecx, eax
mov ebx, eax
mov eax, dword [esp + 0x24]
call fcn.007c3eb0
mov eax, dword [edi + 0x14]
mov edx, edi
mov ecx, dword [esp + 0x38]
mov edi, dword [esp + 0x10]
add edi, eax
test ecx, ecx
jne 0x7c4a2a
movzx eax, byte [edx + 8]
jmp 0x7c4361
mov eax, dword [esp + 0x18]
cmp byte [eax + 0x51], 0
jne 0x7c59ce
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax + 8]
test ebx, ebx
je 0x7c5a4f
sub esp, 0xc
push ebx
call sub.msvcrt.dll_strlen
add esp, 0x10
and eax, 0x3fffffff
lea edx, [ebx + eax - 1]
movzx eax, byte [edx]
add eax, 1
mov byte [edx], al
mov ebx, str.BINARY
jmp 0x7c5885
mov edi, dword [esp + 0x14]
mov ecx, ebx
xor edx, edx
mov eax, edi
call fcn.00778560
sub esp, 0xc
mov edx, 0x39
push dword [esp + 0x2c]
mov ecx, eax
mov eax, edi
call fcn.007903a0
add esp, 0x10
test eax, eax
je 0x7c5a46
mov edx, dword [ebp + 4]
mov ecx, 0x103
and edx, 1
or dword [eax + 4], edx
movzx edx, word [ebp + 0x24]
mov word [eax + 0x24], dx
mov edx, eax
mov edi, dword [esp + 0xc]
mov eax, edi
call fcn.007770e0
mov edx, edi
mov esi, eax
mov ecx, eax
mov eax, dword [esp + 0x24]
call fcn.007c3eb0
jmp 0x7c591a
mov ecx, 0x103
xor edx, edx
jmp 0x7c58e5
mov ecx, 0x103
xor edx, edx
jmp 0x7c5a1b
movzx eax, byte [0xffffffff]
mov edx, 0xffffffff
jmp 0x7c59c9
movzx eax, byte [0xffffffff]
mov edx, 0xffffffff
jmp 0x7c5864
cmp dword [esp], 1
fldz
jne 0x7c5b01
mov eax, dword [esp + 0x54]
movzx eax, byte [eax]
cmp al, 0x2d
je 0x7c4f0a
mov esi, dword [esp + 0x54]
add eax, 1
mov byte [esi], al
mov dword [esp + 0x1c], esi
fstp qword [esp + 0x78]
sub esp, 0xc
push 1
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x64]
call fcn.0076a9a0
mov esi, dword [esp + 0x2c]
add esp, 0x10
sub byte [esi], 1
test eax, eax
jg 0x7c4f0c
cmp dword [esp + 0x44], 0x99
je 0x7c5b0e
mov eax, dword [esp + 0x40]
call fcn.007680b0
mov eax, dword [ebp + 0x14]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
sub esp, 0xc
xor ecx, ecx
push 0
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
call fcn.00779c70
mov dword [esp + 0x2c], eax
add esp, 0x10
jmp 0x7c57c0
mov eax, dword [esp + 0x1c]
add byte [eax], 1
fstp qword [esp + 0x78]
jmp 0x7c5a9d
mov eax, dword [esp + 0x14]
movsx edx, word [ebx + 0x20]
mov esi, dword [eax + 8]
mov eax, dword [esi + 0xd4]
cmp edx, 0x1f
jle 0x7c5c3f
or eax, 0x80000000
mov dword [esi + 0xd4], eax
mov eax, dword [esp + 0x38]
test eax, eax
je 0x7c5bab
mov eax, dword [ebx + 8]
cmp byte [eax + 1], 0
je 0x7c5bab
mov eax, dword [esp + 0x14]
movzx eax, byte [eax + 0x13]
test al, al
je 0x7c5d5f
mov edx, dword [esp + 0x14]
sub eax, 1
mov byte [edx + 0x13], al
movzx eax, al
mov eax, dword [edx + eax*4 + 0x94]
mov dword [esp], eax
mov ecx, dword [esp]
mov eax, dword [esp + 0x14]
mov edx, ebx
call fcn.007be550
mov edx, dword [esi]
mov eax, 0xc13eac
cmp byte [edx + 0x51], 0
jne 0x7c5b92
mov eax, dword [esi + 0x6c]
sub eax, 1
imul eax, eax, 0x14
add eax, dword [esi + 0x68]
mov dword [eax + 0xc], 0
mov eax, dword [esp]
test eax, eax
je 0x7c5bab
mov edx, eax
mov eax, dword [esp + 0x14]
call fcn.0076e4a0
mov eax, dword [esp + 0x40]
call fcn.007680b0
mov eax, dword [ebp + 0x14]
mov ecx, dword [esp + 0x20]
mov eax, dword [eax + 0x18]
mov dword [esp], eax
test ecx, ecx
jne 0x7c5ae1
jmp 0x7c57ae
mov edx, dword [ebx + 0xc]
jmp 0x7c4560
mov eax, dword [esp + 0x40]
mov edx, 1
call fcn.0078c260
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 8]
cmp esi, 0x1f
jle 0x7c5d2e
or dword [edx + 0xd4], 0x80000000
jmp 0x7c4d66
cmp word [esp + 0x58], 0
jne 0x7c5c7b
and dl, 2
je 0x7c511c
xor eax, eax
mov dword [esp + 0x20], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
jmp 0x7c4fcf
sub edx, 1
bts eax, edx
jmp 0x7c5b2d
mov eax, dword [eax + 0x14]
mov ecx, dword [eax]
jmp 0x7c4402
mov eax, dword [esp + 0x58]
call fcn.00762980
cmp al, 0x42
jne 0x7c4ed8
mov eax, dword [esp + 0x58]
mov eax, dword [eax + 0x2c]
cmp dword [eax + 0x38], 0
jne 0x7c4ed8
jmp 0x7c5ac5
mov dword [esp + 0x48], 0
mov dword [esp + 0x4c], 0
jmp 0x7c4fa5
mov eax, dword [esp + 0x3c]
mov ebp, dword [esp + 0x48]
mov esi, dword [eax + 0xc]
mov ebx, dword [eax + 0x14]
sub esi, 1
jns 0x7c4c4c
sub esp, 0xc
xor ecx, ecx
mov edx, 0x31
xor edi, edi
push 0
mov eax, dword [esp + 0x6c]
call fcn.007903a0
add esp, 0x10
test eax, eax
je 0x7c4ce6
mov esi, dword [esp + 0x60]
mov ecx, 3
mov ebx, dword [esi + 4]
mov edx, ebx
mov dword [esp], ebx
and edx, 1
or dword [eax + 4], edx
movzx edx, word [esi + 0x24]
mov esi, dword [esp + 0xc]
mov dword [eax + 0x14], edi
mov word [eax + 0x24], dx
mov edx, eax
mov eax, esi
call fcn.007770e0
mov edx, esi
mov ecx, eax
mov ebx, eax
mov eax, dword [esp + 0x24]
call fcn.007c3eb0
mov eax, dword [esi + 0x14]
lea edx, [ebx + ebx*2]
mov esi, dword [esp + 0x2c]
shl edx, 4
add edx, eax
add eax, dword [esp + 0x10]
movzx ecx, word [eax + 8]
mov dword [edx + 0x10], esi
mov word [edx + 8], cx
add byte [eax + 0xe], 1
jmp 0x7c4ce6
lea ecx, [esi - 1]
mov eax, 1
shl eax, cl
or dword [edx + 0xd4], eax
jmp 0x7c4d66
mov byte [esp + 0x2b], al
mov eax, dword [esp]
mov dword [esp + 0x20], ebp
mov ebp, edi
mov esi, dword [eax + 0x18]
mov eax, 1
mov edi, eax
jmp 0x7c492c
mov eax, dword [esp + 0x14]
mov edx, dword [eax + 0x2c]
add edx, 1
mov dword [esp], edx
mov dword [eax + 0x2c], edx
jmp 0x7c5b6b
mov ebx, 0x35
jmp 0x7c570f
mov eax, dword [esp + 0x54]
mov word [eax + 0xc], 0x200
jmp 0x7c533f
mov eax, dword [8]
ud2
movzx eax, byte [pe_dos_header]
ud2