Function at 0x10078930
Capabilities:
Create process on windows
Encode data using base64
Get common file path
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x540
call 0x10078944
pop eax
mov dword [esp + 0x2c], ecx
mov ecx, dword [edx + 0x30]
mov dword [esp + 4], edx
mov dword [esp + 0x20], eax
movzx eax, byte [edx + 0x34]
test al, al
jne 0x10078987
test ecx, ecx
jne 0x10078987
mov dword [esp + 0x120], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x20]
test ecx, ecx
jne 0x10079307
jmp 0x1007935d
test al, al
mov dword [esp + 0x100], 0
mov dword [esp + 0xc], ecx
mov dword [esp + 0x108], 0
jne 0x10078b23
call fcn.10056f20
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], edx
nop word cs:[eax + eax]
lea eax, [esp + 0x34]
push eax
lea eax, [esp + 0x140]
push eax
call fcn.10075050
add esp, 8
cmp byte [esp + 0x148], 2
je 0x10078b1a
mov ecx, dword [esp + 0x14c]
mov eax, dword [esp + 0x140]
movq xmm0, qword [esp + 0x144]
mov edi, dword [esp + 0x13c]
mov ebx, dword [esp + 0x158]
mov esi, dword [esp + 0x154]
mov dword [esp], ecx
mov ecx, dword [esp + 0x150]
mov dword [esp + 0x10], eax
movd eax, xmm0
movdqa xmmword [esp + 0x90], xmm0
mov dword [esp + 0xa8], edi
add eax, edi
mov dword [esp + 0xac], eax
mov word [esp + 0xb0], 0
mov dword [esp + 8], ecx
lea ecx, [esp + 0x80]
lea edx, [esp + 0xa8]
call fcn.1004b600
mov eax, dword [esp + 0x10]
mov dword [esp + 0xd8], edi
movaps xmm0, xmmword [esp + 0x90]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x88]
movlps qword [esp + 0xe0], xmm0
movq xmm0, qword [esp + 0x80]
mov dword [esp + 0xd4], eax
mov eax, dword [esp]
movq qword [esp + 0xcc], xmm0
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 8]
mov dword [esp + 0xac], eax
mov dword [esp + 0xb4], ebx
mov dword [esp + 0xb0], esi
lea edx, [esp + 0x100]
lea eax, [esp + 0xa8]
lea ecx, [esp + 0x80]
push eax
lea eax, [esp + 0xd0]
push eax
call fcn.10039c30
add esp, 8
cmp byte [esp + 0x8c], 2
je 0x100789c0
mov eax, dword [esp + 0x84]
test eax, eax
je 0x100789c0
push 1
push eax
push dword [esp + 0x88]
call fcn.10004680
add esp, 0xc
jmp 0x100789c0
push dword [esp + 0x30]
call sub.KERNEL32.dll_FreeEnvironmentStringsW
mov ecx, dword [esp + 4]
mov esi, dword [esp + 0xc]
xor edx, edx
mov eax, dword [ecx + 0x28]
mov ecx, dword [ecx + 0x2c]
test eax, eax
setne dl
cmove esi, eax
mov dword [esp + 0xa8], edx
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], ecx
mov dword [esp + 0xb8], edx
mov dword [esp + 0xbc], 0
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], ecx
mov dword [esp + 0xc8], esi
nop word cs:[eax + eax]
nop dword [eax]
lea ecx, [esp + 0xa8]
call fcn.10034630
mov ebx, eax
test eax, eax
je 0x10079125
cmp byte [edx + 0xc], 2
mov edi, edx
jne 0x10078d20
mov esi, dword [esp + 0x100]
test esi, esi
je 0x10078b90
mov edi, dword [esp + 0x104]
mov edx, esi
lea ecx, [esp + 0x80]
push dword [ebx + 8]
push dword [ebx]
push edi
call fcn.1003e8b0
add esp, 0xc
cmp dword [esp + 0x80], 0
jne 0x10078b90
mov ecx, dword [esp + 0x88]
mov eax, dword [esp + 0x84]
mov edx, dword [esp + 0x8c]
mov byte [esp + 0x130], 0
test ecx, ecx
jne 0x10078c57
mov dword [esp + 0xcc], eax
mov dword [esp + 0xd0], 0
mov dword [esp + 0xd4], edx
lea edx, [esp + 0xcc]
lea eax, [esp + 0x130]
lea ecx, [esp + 0x13c]
push eax
call fcn.1003e450
add esp, 4
jmp 0x10079023
movzx edx, word [eax + 0x1ea]
mov eax, dword [eax + edx*4 + 0x1ec]
dec ecx
jne 0x10078c50
movzx ecx, word [eax + 0x1ea]
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], 0
dec ecx
mov dword [esp + 0x38], ecx
lea edx, [esp + 0x30]
lea eax, [esp + 0x130]
lea ecx, [esp + 0x13c]
push eax
call fcn.1003e450
add esp, 4
movsd xmm2, qword [esp + 0x154]
movsd xmm1, qword [esp + 0x14c]
mov eax, dword [esp + 0x164]
movq xmm0, qword [esp + 0x15c]
mov edx, dword [esp + 0x168]
mov ecx, dword [esp + 0x170]
movsd qword [esp + 0xe4], xmm2
movsd qword [esp + 0xdc], xmm1
movsd xmm2, qword [esp + 0x13c]
movsd xmm1, qword [esp + 0x144]
mov dword [esp + 0xf4], eax
movq qword [esp + 0xec], xmm0
movsd qword [esp + 0xd4], xmm1
movsd qword [esp + 0xcc], xmm2
movzx eax, word [edx + 0x1ea]
cmp ecx, eax
jae 0x10078ee3
mov eax, edx
jmp 0x10078f13
mov eax, dword [ebx + 0x14]
mov ecx, dword [ebx + 0xc]
test eax, eax
mov dword [esp + 0x10], eax
je 0x10078d5a
mov dword [esp], ecx
js 0x1007bae2
mov eax, dword [0x100f5654]
movzx eax, byte [eax]
push 1
mov esi, dword [esp + 0x14]
push esi
call fcn.10004670
add esp, 8
mov ecx, dword [esp]
test eax, eax
jne 0x10078d63
jmp 0x1007bad2
mov esi, dword [esp + 0x10]
mov eax, 1
push esi
push ecx
mov dword [esp + 0x98], eax
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov esi, dword [ebx + 8]
movzx ecx, byte [ebx + 0x18]
mov edx, dword [ebx]
xor eax, eax
mov dword [esp], 2
test esi, esi
mov dword [esp + 8], esi
mov byte [esp + 0xc], cl
je 0x10078dd0
cmp esi, 0x3fffffff
ja 0x1007baec
lea ebx, [esi + esi]
test ebx, ebx
js 0x1007baec
je 0x10078dd0
mov eax, dword [0x100f5654]
mov esi, edx
movzx eax, byte [eax]
push 2
push ebx
call fcn.10004670
add esp, 8
test eax, eax
mov dword [esp], eax
je 0x1007bb06
mov eax, ebx
mov edx, esi
push eax
push edx
mov ebx, dword [esp + 8]
push ebx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x90]
mov esi, dword [esp + 8]
mov dword [esp + 0x148], eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x14c], eax
mov dword [esp + 0x150], eax
movzx eax, byte [esp + 0xc]
mov byte [esp + 0x154], al
mov dword [esp + 0x13c], ebx
mov dword [esp + 0x140], esi
mov dword [esp + 0x144], esi
mov ebx, dword [edi + 8]
mov eax, dword [edi]
test ebx, ebx
je 0x10078e59
mov dword [esp + 0xc], eax
js 0x1007bac8
mov eax, dword [0x100f5654]
movzx eax, byte [eax]
push 1
push ebx
call fcn.10004670
add esp, 8
mov esi, eax
test eax, eax
mov eax, dword [esp + 0xc]
jne 0x10078e5e
jmp 0x1007baf6
mov esi, 1
push ebx
push eax
push esi
call sub.msvcrt.dll_memcpy
add esp, 0xc
movzx eax, byte [edi + 0xc]
mov dword [esp + 0xcc], esi
mov dword [esp + 0xd0], ebx
mov dword [esp + 0xd4], ebx
mov byte [esp + 0xd8], al
lea edx, [esp + 0x100]
lea eax, [esp + 0xcc]
lea ecx, [esp + 0x80]
push eax
lea eax, [esp + 0x140]
push eax
call fcn.10039c30
add esp, 8
cmp byte [esp + 0x8c], 2
je 0x10078b90
mov eax, dword [esp + 0x84]
test eax, eax
je 0x10078b90
push 1
push eax
push dword [esp + 0x88]
call fcn.10004680
add esp, 0xc
jmp 0x10078b90
mov ebx, dword [esp + 0x16c]
nop word [eax + eax]
mov eax, dword [edx + 0xb0]
test eax, eax
je 0x10078f0f
movzx ecx, word [edx + 0x1e8]
inc ebx
mov edx, eax
cmp cx, word [eax + 0x1ea]
jae 0x10078ef0
jmp 0x10078f13
xor eax, eax
mov ecx, ebx
lea edx, [ecx + ecx*8]
lea edx, [edx + edx*2]
add edx, ecx
shl ecx, 4
mov ebx, dword [eax + edx + 0xcc]
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0xe4]
movsd xmm0, qword [eax + edx + 0xc4]
movsd qword [esp + 0x4c], xmm0
movsd xmm0, qword [eax + edx + 0xb4]
movsd xmm1, qword [eax + edx + 0xbc]
movsd qword [esp + 0x44], xmm1
movsd qword [esp + 0x3c], xmm0
mov dword [eax + edx + 0xcc], ebx
lea ebx, [esp + 0xe8]
movsd xmm0, qword [esp + 0xdc]
movsd qword [eax + edx + 0xc4], xmm0
movsd xmm0, qword [esp + 0xcc]
movsd xmm1, qword [esp + 0xd4]
movsd qword [eax + edx + 0xbc], xmm1
movsd qword [eax + edx + 0xb4], xmm0
lea edx, [esp + 0x58]
movsd xmm0, qword [eax + ecx]
movsd xmm1, qword [eax + ecx + 8]
movsd qword [edx + 8], xmm1
movsd qword [edx], xmm0
movsd xmm0, qword [ebx]
movsd xmm1, qword [ebx + 8]
movsd qword [eax + ecx], xmm0
movsd qword [eax + ecx + 8], xmm1
movsd xmm2, qword [esp + 0x54]
movsd xmm1, qword [esp + 0x4c]
mov eax, dword [esp + 0x64]
movq xmm0, qword [esp + 0x5c]
movsd qword [esp + 0x154], xmm2
movsd qword [esp + 0x14c], xmm1
movsd xmm2, qword [esp + 0x3c]
movsd xmm1, qword [esp + 0x44]
mov dword [esp + 0x164], eax
movq qword [esp + 0x15c], xmm0
movsd qword [esp + 0x144], xmm1
movsd qword [esp + 0x13c], xmm2
mov eax, dword [esp + 0x13c]
dec dword [esp + 0x108]
mov ebx, dword [esp + 0x148]
mov ecx, dword [esp + 0x14c]
mov edx, dword [esp + 0x154]
cmp byte [esp + 0x130], 0
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0x140]
mov dword [esp], eax
mov eax, dword [esp + 0x158]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x15c]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x164]
mov dword [esp + 8], eax
je 0x100790c9
test edi, edi
mov dword [esp + 0xc], ecx
je 0x1007bb16
mov eax, esi
dec edi
mov esi, edx
mov ecx, eax
mov eax, dword [eax + 0x1ec]
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], edi
mov dword [eax + 0xb0], 0
push 4
push 0x21c
push ecx
call fcn.10004680
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov edx, esi
cmp dl, 2
je 0x10078b90
test ecx, ecx
je 0x100790e2
push 1
push ecx
push ebx
call fcn.10004680
add esp, 0xc
mov eax, dword [esp]
test eax, eax
je 0x100790fd
add eax, eax
push 2
push eax
push dword [esp + 0x98]
call fcn.10004680
add esp, 0xc
movzx eax, byte [esp + 8]
cmp eax, 2
je 0x10078b90
cmp dword [esp + 0x10], 0
je 0x10078b90
push 1
push dword [esp + 0x14]
push dword [esp + 0x1c]
jmp 0x10078ed6
mov eax, dword [esp + 0x108]
movq xmm0, qword [esp + 0x100]
mov dword [esp + 0x12c], eax
mov eax, dword [0x100f5654]
movq qword [esp + 0x124], xmm0
mov dword [esp + 0x120], 1
movzx eax, byte [eax]
push 1
push 4
call fcn.10004670
add esp, 8
test eax, eax
je 0x1007bb2f
mov edi, eax
mov dword [eax], 0x48544150
add eax, 4
mov dword [esp + 0x3c], edi
mov dword [esp + 0x40], eax
mov word [esp + 0x44], 0
lea ecx, [esp + 0xcc]
lea edx, [esp + 0x3c]
call fcn.1004b600
movq xmm0, qword [esp + 0xcc]
mov eax, dword [esp + 0xd4]
mov dword [esp + 0x148], edi
mov dword [esp + 0x14c], 4
mov dword [esp + 0x150], 4
mov byte [esp + 0x154], 0
xor esi, esi
movq qword [esp + 0x13c], xmm0
mov dword [esp + 8], eax
mov dword [esp + 0x144], eax
mov eax, dword [esp + 0x13c]
mov dword [esp], eax
mov eax, dword [esp + 0x124]
test eax, eax
je 0x100792cf
mov ecx, dword [esp + 0x128]
mov dword [esp + 0x18], edi
mov dword [esp + 0xc], ecx
movzx edx, word [eax + 0x1ea]
lea ecx, [eax + 0xb4]
mov dword [esp + 0x90], eax
lea ebx, [eax - 8]
mov edi, 0xffffffff
lea eax, [edx + edx*8]
mov dword [esp + 0x14], edx
lea esi, [eax + eax*2]
add esi, edx
nop word cs:[eax + eax]
nop dword [eax + eax]
test esi, esi
je 0x10079280
lea eax, [ecx + 0x1c]
mov dword [esp + 0x10], eax
push 1
push dword [ecx + 8]
push dword [ecx]
push dword [esp + 0x14]
push dword [esp + 0x10]
call sub.KERNEL32.dll_CompareStringOrdinal
mov ecx, dword [esp + 0x10]
add ebx, 0x10
inc edi
add esi, 0xffffffe4
cmp eax, 3
je 0x10079240
cmp eax, 1
jne 0x100792a8
jmp 0x10079284
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x90]
sub ecx, 1
jb 0x1007974e
mov eax, dword [eax + edi*4 + 0x1ec]
mov dword [esp + 0xc], ecx
jmp 0x10079209
cmp eax, 2
jne 0x1007ba59
cmp dword [esp + 0x90], 0
mov edi, dword [esp + 0x18]
mov esi, 0
je 0x100792cf
mov esi, dword [ebx - 8]
mov eax, dword [ebx]
mov dword [esp + 0xc], eax
jmp 0x100792cf
push 1
push 4
push edi
call fcn.10004680
add esp, 0xc
mov eax, dword [esp + 0x140]
test eax, eax
je 0x100792f8
add eax, eax
push 2
push eax
push dword [esp + 8]
call fcn.10004680
add esp, 0xc
mov dword [esp + 8], esi
mov eax, dword [esp + 4]
mov ecx, dword [eax + 0x20]
test ecx, ecx
je 0x1007935d
mov eax, dword [esp + 4]
cmp ecx, 4
mov dword [esp + 0x10], ecx
mov edx, dword [eax + 0x18]
mov eax, 0x10076060
jb 0x1007933f
mov eax, dword [edx]
xor ecx, ecx
bswap eax
cmp eax, 0x5c5c3f5c
setb cl
cmp eax, 0x5c5c3f5d
mov eax, 0x10076060
adc ecx, 0xffffffff
mov ecx, 0x10076080
cmove eax, ecx
mov ecx, dword [esp + 0x10]
mov dword [esp], edx
movzx ebx, byte [ecx + edx - 1]
push ebx
call eax
add esp, 4
mov edi, dword [esp + 0x10]
test al, al
je 0x100793e9
mov byte [esp + 0x34], 2
mov dword [esp + 0x38], 0x100dde44
mov ecx, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
mov eax, dword [esp + 0x2c]
mov dword [eax], ecx
mov dword [eax + 4], edi
mov dword [eax + 8], 2
cmp dword [esp + 0x120], 0
je 0x1007948b
mov ecx, dword [esp + 0x124]
test ecx, ecx
je 0x10079466
mov edx, dword [esp + 0x128]
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x140], 0
mov dword [esp + 0x144], ecx
mov dword [esp + 0x148], edx
mov dword [esp + 0x150], 0
mov dword [esp + 0x154], ecx
mov ecx, 1
mov dword [esp + 0x158], edx
jmp 0x1007946a
xor eax, eax
cmp edi, 4
mov ecx, 0
jb 0x100794ad
mov esi, dword [esp]
movzx ecx, byte [edi + esi - 4]
mov edx, ecx
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, cl
cmp dl, 0x2e
jne 0x100794a3
movzx ecx, byte [esi + edi - 3]
mov edx, ecx
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, cl
cmp dl, 0x65
jne 0x100794a3
movzx ecx, byte [esi + edi - 2]
mov edx, ecx
add dl, 0xbf
cmp dl, 0x1a
setb dl
shl dl, 5
or dl, cl
cmp dl, 0x78
jne 0x100794a7
mov ecx, ebx
add cl, 0xbf
cmp cl, 0x1a
setb cl
shl cl, 5
or cl, bl
cmp cl, 0x65
sete cl
jmp 0x100794a9
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x13c], ecx
mov dword [esp + 0x14c], ecx
mov dword [esp + 0x15c], eax
lea ecx, [esp + 0x13c]
call fcn.100363c0
mov eax, dword [ebp + 8]
cmp dword [eax], 4
jb 0x1007949b
push dword [eax + 4]
call sub.KERNEL32.dll_CloseHandle
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ecx, ecx
jmp 0x100794ad
xor ecx, ecx
mov edi, dword [esp + 0x10]
mov edx, dword [esp]
lea esi, [edx + edi]
mov dword [esp + 0x90], esi
nop word [eax + eax]
cmp dword [esp + 0x10], eax
je 0x1007953d
mov edx, dword [esp]
movzx edx, byte [edx + eax]
cmp edx, 0x5c
je 0x100794d8
inc eax
cmp edx, 0x2f
jne 0x100794c0
test cl, cl
je 0x10079604
mov edx, dword [esp]
lea ecx, [esp + 0x13c]
push dword [esp + 0x10]
call fcn.1007ed60
add esp, 4
mov edx, dword [esp + 0x13c]
mov eax, dword [esp + 0x140]
mov ecx, dword [esp + 0x144]
test edx, edx
je 0x100796cc
mov dword [esp + 0x13c], edx
mov dword [esp + 0x140], eax
mov dword [esp + 0x144], ecx
lea ecx, [esp + 0x30]
lea edx, [esp + 0x13c]
call fcn.1006fb00
jmp 0x1007a068
mov eax, dword [esp]
xor edi, edi
jmp 0x1007955b
xor edi, edi
test cx, cx
je 0x100796b7
mov cx, 1
test di, di
jne 0x10079550
cmp eax, esi
je 0x10079711
movzx ebx, byte [eax]
test bl, bl
js 0x10079578
inc eax
mov edx, ebx
jmp 0x100795d1
movzx esi, byte [eax + 1]
mov edx, ebx
and edx, 0x1f
and esi, 0x3f
cmp bl, 0xdf
jbe 0x100795c2
movzx edi, byte [eax + 2]
shl esi, 6
and edi, 0x3f
or edi, esi
cmp bl, 0xf0
jb 0x100795da
movzx esi, byte [eax + 3]
and edx, 7
shl edi, 6
add eax, 4
shl edx, 0x12
and esi, 0x3f
or esi, edi
or edx, esi
mov esi, dword [esp + 0x90]
cmp edx, 0xffff
jbe 0x100795d1
jmp 0x100795f1
shl edx, 6
add eax, 2
or edx, esi
mov esi, dword [esp + 0x90]
xor edi, edi
mov ecx, edx
jmp 0x10079552
shl edx, 0xc
add eax, 3
or edx, edi
mov esi, dword [esp + 0x90]
cmp edx, 0xffff
jbe 0x100795d1
and edx, 0x3ff
or edx, 0xdc00
mov edi, edx
jmp 0x10079552
mov edi, dword [esp + 0x10]
test edi, edi
js 0x1007bb7c
mov eax, dword [0x100f5654]
movzx eax, byte [eax]
push 1
push edi
call fcn.10004670
add esp, 8
test eax, eax
je 0x1007bb37
mov esi, eax
push edi
push dword [esp + 4]
push eax
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov dword [esp + 0x13c], esi
mov dword [esp + 0x140], edi
mov dword [esp + 0x144], edi
mov byte [esp + 0x148], 0
lea eax, [esp + 0x13c]
push 4
push 0x100dde01
push eax
call fcn.10075810
add esp, 0xc
mov eax, dword [esp + 0x140]
mov esi, dword [esp + 0x13c]
mov edi, dword [esp + 0x144]
mov dword [esp + 0x10], eax
mov edx, esi
lea ecx, [esp + 0x3c]
push edi
call fcn.1007c450
add esp, 4
cmp dword [esp + 0x3c], 0
je 0x100796e1
mov eax, dword [esp + 0x44]
movq xmm0, qword [esp + 0x3c]
mov dword [esp + 0x38], eax
movq qword [esp + 0x30], xmm0
jmp 0x1007a054
mov dword [esp + 0x34], 2
mov dword [esp + 0x38], 0x100dddf4
jmp 0x1007936a
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], 0
jmp 0x1007a068
push edi
push esi
call fcn.10066550
add esp, 8
test eax, eax
je 0x10079ff2
mov ebx, edx
cmp edx, 2
jne 0x10079759
movzx ecx, word [eax]
cmp ecx, 0x2e2e
jne 0x10079759
mov ebx, 2
xor ecx, ecx
jmp 0x10079fdb
mov eax, dword [esp + 0x10]
cmp eax, 7
ja 0x100797ad
mov edx, dword [esp + 8]
mov ecx, dword [esp]
xor eax, eax
nop word [eax + eax]
cmp byte [ecx + eax], 0x2e
je 0x100797d7
inc eax
cmp dword [esp + 0x10], eax
jne 0x10079730
mov dword [esp + 0x1c], 0
jmp 0x100797df
mov edi, dword [esp + 0x18]
xor esi, esi
jmp 0x100792cf
xor ecx, ecx
mov dword [esp + 8], esi
mov dword [esp + 0xc], eax
nop word cs:[eax + eax]
nop dword [eax]
cmp ebx, ecx
je 0x100797c6
cmp byte [eax + ebx - 1], 0x2e
lea esi, [eax - 1]
mov edx, ecx
lea ecx, [ecx + 1]
mov eax, esi
jne 0x10079770
mov eax, ebx
sub eax, ecx
mov dword [esp + 0x14], eax
inc eax
cmp eax, ebx
ja 0x1007bbad
cmp ebx, ecx
jne 0x10079fcb
mov esi, dword [esp + 8]
mov eax, dword [esp + 0xc]
xor ecx, ecx
jmp 0x10079fdb
push eax
push dword [esp + 4]
push 0x2e
call fcn.100b61f0
add esp, 0xc
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 8]
jmp 0x100797df
mov ecx, dword [esp + 0xc]
mov esi, dword [esp + 8]
mov edx, ebx
xor eax, eax
jmp 0x10079fdb
mov dword [esp + 0x1c], 1
test edx, edx
je 0x1007992c
mov eax, dword [esp + 0xc]
mov dword [esp + 0xcc], edx
add eax, edx
mov dword [esp + 0xd0], eax
mov word [esp + 0xd4], 0
mov byte [esp + 0xd8], 1
lea ebx, [esp + 0xcc]
lea esi, [esp + 0x13c]
push ebx
push esi
call fcn.100751e0
add esp, 8
jmp 0x1007983a
push ebx
push esi
call fcn.100751e0
add esp, 8
movzx eax, byte [esp + 0x148]
cmp al, 2
je 0x1007992c
mov edi, dword [esp + 0x144]
mov ecx, dword [esp + 0x13c]
mov edx, dword [esp + 0x140]
test edi, edi
jne 0x10079875
test edx, edx
je 0x10079830
push 1
push edx
push ecx
call fcn.10004680
add esp, 0xc
jmp 0x10079830
lea ebx, [esp + 0x149]
lea esi, [esp + 0x49]
movzx ebx, word [ebx]
mov word [esi], bx
lea ebx, [esp + 0x149]
mov ah, byte [ebx + 2]
mov byte [esi + 2], ah
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], edi
mov byte [esp + 0x48], al
push dword [esp + 0x10]
push dword [esp + 4]
lea eax, [esp + 0x44]
push eax
call fcn.100654e0
add esp, 0xc
cmp dword [esp + 0x1c], 1
je 0x100798d3
push 3
push str.exeNULexit_code:
lea eax, [esp + 0x44]
push eax
call fcn.10065fd0
add esp, 0xc
mov ebx, dword [esp + 0x3c]
mov edx, ebx
lea ecx, [esp + 0x13c]
push dword [esp + 0x44]
call fcn.1007c450
add esp, 4
mov eax, dword [esp + 0x40]
test eax, eax
je 0x10079900
push 1
push eax
push ebx
call fcn.10004680
add esp, 0xc
mov eax, dword [esp + 0x13c]
test eax, eax
jne 0x1007b427
lea ebx, [esp + 0xcc]
push ebx
lea esi, [esp + 0x140]
push esi
call fcn.100751e0
add esp, 8
jmp 0x1007983a
lea ecx, [esp + 0x3c]
call fcn.10075410
cmp byte [esp + 0x48], 2
jne 0x1007994a
lea ecx, [esp + 0x3c]
call fcn.10037a10
jmp 0x10079a19
mov eax, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
mov edi, dword [esp + 0x44]
mov ebx, dword [esp + 0x48]
mov dword [esp + 8], eax
push edi
push esi
call fcn.10066410
add esp, 8
mov ecx, dword [esp + 8]
cmp edi, edx
mov dword [esp + 0x13c], esi
cmovb edx, edi
test eax, eax
cmove edx, edi
mov dword [esp + 0x140], ecx
mov dword [esp + 0x144], edx
mov dword [esp + 0x148], ebx
lea esi, [esp + 0x13c]
push dword [esp + 0x10]
push dword [esp + 4]
push esi
call fcn.100654e0
add esp, 0xc
cmp dword [esp + 0x1c], 1
je 0x100799c1
push 3
push str.exeNULexit_code:
push esi
call fcn.10065fd0
add esp, 0xc
mov esi, dword [esp + 0x13c]
mov edx, esi
lea ecx, [esp + 0xcc]
push dword [esp + 0x144]
call fcn.1007c450
add esp, 4
mov eax, dword [esp + 0x140]
test eax, eax
je 0x100799f7
push 1
push eax
push esi
call fcn.10004680
add esp, 0xc
mov esi, dword [esp + 0xcc]
test esi, esi
je 0x10079a19
mov eax, dword [esp + 0xd0]
mov edi, dword [esp + 0xd4]
mov dword [esp + 0x10], eax
jmp 0x1007a080
mov esi, 0x200
xor ebx, ebx
mov dword [esp + 0x80], 2
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 0x18], 2
mov dword [esp + 0xc], 0
cmp esi, 0x201
jb 0x10079a72
jmp 0x10079a90
mov ebx, dword [esp + 8]
jbe 0x10079b30
cmp esi, 0x201
jae 0x10079a90
mov dword [esp + 8], ebx
mov dword [esp + 0x14], 0x200
lea edi, [esp + 0x13c]
mov ebx, esi
jmp 0x10079ad7
mov eax, dword [esp + 0xc]
sub esi, ebx
sub eax, ebx
cmp eax, esi
jae 0x10079ac0
mov edx, ebx
lea ecx, [esp + 0x80]
push esi
call fcn.1003fa60
add esp, 4
mov eax, dword [esp + 0x80]
mov ebx, dword [esp + 0x84]
mov dword [esp + 0x18], eax
mov edi, dword [esp + 0x18]
mov dword [esp + 0x88], ebx
mov dword [esp + 0xc], ebx
mov dword [esp + 0x14], ebx
mov dword [esp + 8], ebx
push 0
call sub.KERNEL32.dll_SetLastError
push ebx
push edi
call sub.KERNEL32.dll_GetSystemDirectoryW
mov esi, eax
test eax, eax
jne 0x10079af8
call sub.KERNEL32.dll_GetLastError
test eax, eax
jne 0x10079bd3
cmp esi, ebx
jne 0x10079a60
call sub.KERNEL32.dll_GetLastError
cmp eax, 0x7a
jne 0x1007bb4a
lea esi, [ebx + ebx]
test ebx, ebx
mov ebx, dword [esp + 8]
mov eax, 0xffffffff
cmovs esi, eax
cmp esi, 0x201
jae 0x10079a90
jmp 0x10079a72
mov eax, dword [esp + 0x14]
cmp esi, eax
ja 0x1007bb9c
push esi
push edi
lea esi, [esp + 0x44]
push esi
call fcn.10063970
add esp, 0xc
push dword [esp + 0x10]
push dword [esp + 4]
push esi
call fcn.100654e0
add esp, 0xc
cmp dword [esp + 0x1c], 1
je 0x10079b77
push 3
push str.exeNULexit_code:
lea eax, [esp + 0x44]
push eax
call fcn.10065fd0
add esp, 0xc
mov esi, dword [esp + 0x3c]
mov edx, esi
lea ecx, [esp + 0xa8]
push dword [esp + 0x44]
call fcn.1007c450
add esp, 4
mov eax, dword [esp + 0x40]
test eax, eax
je 0x10079ba4
push 1
push eax
push esi
call fcn.10004680
add esp, 0xc
movq xmm0, qword [esp + 0xa8]
mov eax, dword [esp + 0xb0]
mov bl, 1
movq qword [esp + 0xd0], xmm0
mov dword [esp + 0xd8], eax
mov dword [esp + 0xcc], 0
jmp 0x10079bf4
call sub.KERNEL32.dll_GetLastError
xor ebx, ebx
mov byte [esp + 0xd0], 0
mov dword [esp + 0xd4], eax
mov dword [esp + 0xcc], 1
mov eax, dword [esp + 8]
test eax, eax
je 0x10079c0d
add eax, eax
push 2
push eax
push dword [esp + 0x20]
call fcn.10004680
add esp, 0xc
test bl, bl
je 0x10079c20
mov esi, dword [esp + 0xd0]
test esi, esi
jne 0x10079e3c
lea ecx, [esp + 0xcc]
call fcn.10036190
mov esi, 0x200
mov dword [esp + 0x80], 2
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
mov dword [esp + 8], 0
mov dword [esp + 0x18], 2
mov dword [esp + 0xc], 0
cmp esi, 0x201
jb 0x10079c8e
jmp 0x10079cb0
jbe 0x10079d50
cmp esi, 0x201
jae 0x10079cb0
mov dword [esp + 0x14], 0x200
lea ebx, [esp + 0x13c]
mov edi, esi
jmp 0x10079cfb
mov edi, dword [esp + 8]
mov eax, dword [esp + 0xc]
sub esi, edi
sub eax, edi
cmp eax, esi
jae 0x10079ce4
mov edx, edi
lea ecx, [esp + 0x80]
push esi
call fcn.1003fa60
add esp, 4
mov eax, dword [esp + 0x80]
mov edi, dword [esp + 0x84]
mov dword [esp + 0x18], eax
mov ebx, dword [esp + 0x18]
mov dword [esp + 0x88], edi
mov dword [esp + 0xc], edi
mov dword [esp + 0x14], edi
mov dword [esp + 8], edi
push 0
call sub.KERNEL32.dll_SetLastError
push edi
push ebx
call sub.KERNEL32.dll_GetWindowsDirectoryW
mov esi, eax
test eax, eax
jne 0x10079d1c
call sub.KERNEL32.dll_GetLastError
test eax, eax
jne 0x10079df3
cmp esi, edi
jne 0x10079c80
call sub.KERNEL32.dll_GetLastError
cmp eax, 0x7a
jne 0x1007bb63
lea esi, [edi + edi]
test edi, edi
mov eax, 0xffffffff
cmovs esi, eax
cmp esi, 0x201
jae 0x10079cb0
jmp 0x10079c8e
mov eax, dword [esp + 0x14]
cmp esi, eax
ja 0x1007bbc2
push esi
push ebx
lea esi, [esp + 0x44]
push esi
call fcn.10063970
add esp, 0xc
push dword [esp + 0x10]
push dword [esp + 4]
push esi
call fcn.100654e0
add esp, 0xc
cmp dword [esp + 0x1c], 1
je 0x10079d97
push 3
push str.exeNULexit_code:
lea eax, [esp + 0x44]
push eax
call fcn.10065fd0
add esp, 0xc
mov esi, dword [esp + 0x3c]
mov edx, esi
lea ecx, [esp + 0xa8]
push dword [esp + 0x44]
call fcn.1007c450
add esp, 4
mov eax, dword [esp + 0x40]
test eax, eax
je 0x10079dc4
push 1
push eax
push esi
call fcn.10004680
add esp, 0xc
movq xmm0, qword [esp + 0xa8]
mov eax, dword [esp + 0xb0]
mov bl, 1
movq qword [esp + 0xd0], xmm0
mov dword [esp + 0xd8], eax
mov dword [esp + 0xcc], 0
jmp 0x10079e14
call sub.KERNEL32.dll_GetLastError
xor ebx, ebx
mov byte [esp + 0xd0], 0
mov dword [esp + 0xd4], eax
mov dword [esp + 0xcc], 1
mov eax, dword [esp + 8]
test eax, eax
je 0x10079e2d
add eax, eax
push 2
push eax
push dword [esp + 0x20]
call fcn.10004680
add esp, 0xc
test bl, bl
je 0x10079e53
mov esi, dword [esp + 0xd0]
test esi, esi
je 0x10079e53
mov eax, dword [esp + 0xd4]
mov edi, dword [esp + 0xd8]
mov dword [esp + 0x10], eax
jmp 0x1007a080
lea edi, [esp + 0xcc]
mov ecx, edi
call fcn.10036190
lea eax, [esp + 0xa8]
push 4
push str.PATHlibrary_std_src_sys_commonprocess.rs
push eax
call fcn.10057420
add esp, 0xc
cmp byte [esp + 0xb4], 2
je 0x1007ae29
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0xb0]
mov eax, dword [esp + 0xac]
lea ebx, [esp + 0x13c]
add edx, ecx
mov dword [esp + 0xcc], ecx
mov dword [esp + 8], eax
mov dword [esp + 0xc], ecx
mov dword [esp + 0xd0], edx
mov word [esp + 0xd4], 0
mov byte [esp + 0xd8], 1
jmp 0x10079ee4
mov esi, dword [esp + 0x13c]
lea edi, [esp + 0xcc]
test esi, esi
jne 0x1007b804
push edi
push ebx
call fcn.100751e0
add esp, 8
jmp 0x10079efa
push edi
push ebx
call fcn.100751e0
add esp, 8
movzx eax, byte [esp + 0x148]
cmp al, 2
je 0x1007ae12
mov esi, dword [esp + 0x144]
mov ecx, dword [esp + 0x13c]
mov edx, dword [esp + 0x140]
test esi, esi
jne 0x10079f35
test edx, edx
je 0x10079ef0
push 1
push edx
push ecx
call fcn.10004680
add esp, 0xc
jmp 0x10079ef0
lea edi, [esp + 0x149]
lea ebx, [esp + 0x49]
movzx edi, word [edi]
mov word [ebx], di
lea edi, [esp + 0x149]
mov ah, byte [edi + 2]
mov byte [ebx + 2], ah
lea ebx, [esp + 0x13c]
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x44], esi
mov byte [esp + 0x48], al
push dword [esp + 0x10]
push dword [esp + 4]
lea eax, [esp + 0x44]
push eax
call fcn.100654e0
add esp, 0xc
cmp dword [esp + 0x1c], 1
je 0x10079f9a
push 3
push str.exeNULexit_code:
lea eax, [esp + 0x44]
push eax
call fcn.10065fd0
add esp, 0xc
mov esi, dword [esp + 0x3c]
mov edx, esi
mov ecx, ebx
push dword [esp + 0x44]
call fcn.1007c450
add esp, 4
mov eax, dword [esp + 0x40]
test eax, eax
je 0x10079ece
push 1
push eax
push esi
call fcn.10004680
add esp, 0xc
jmp 0x10079ece
lea ecx, [esi + ebx + 1]
mov esi, dword [esp + 8]
mov eax, dword [esp + 0xc]
mov ebx, dword [esp + 0x14]
test eax, eax
cmovne ecx, eax
test ecx, ecx
je 0x10079ff2
test eax, eax
cmove ebx, edx
add ecx, ebx
sub ecx, esi
cmp edi, ecx
cmovae edi, ecx
mov edx, esi
lea ecx, [esp + 0x13c]
push edi
call fcn.1007ed60
add esp, 4
mov edx, dword [esp + 0x13c]
mov eax, dword [esp + 0x140]
mov ecx, dword [esp + 0x144]
test edx, edx
je 0x1007a044
mov dword [esp + 0x13c], edx
mov dword [esp + 0x140], eax
mov dword [esp + 0x144], ecx
lea ecx, [esp + 0x30]
lea edx, [esp + 0x13c]
call fcn.1006fb00
jmp 0x1007a054
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], ecx
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1007a068
push 1
push eax
push esi
call fcn.10004680
add esp, 0xc
mov esi, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
mov edi, dword [esp + 0x38]
test esi, esi
mov dword [esp + 0x10], eax
je 0x1007a1ce
cmp edi, 5
mov dword [esp + 8], esi
jb 0x1007a09d
cmp word [esi + edi*2 - 0xa], 0x2e
jne 0x1007a09d
cmp word [esi + edi*2 - 2], 0
je 0x1007a8f0
mov eax, dword [esp + 4]
mov dword [esp + 0x3c], 2
mov dword [esp + 0x40], 0
mov dword [esp + 0x44], 0
mov ebx, dword [eax + 0x48]
mov esi, dword [eax + 0x50]
movzx eax, byte [eax + 0x65]
mov byte [esp + 0xc], al
lea ecx, [esp + 0x3c]
xor edx, edx
call fcn.1003f920
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
mov edi, dword [esp + 0x90]
mov word [eax + ecx*2], 0x22
mov eax, dword [esp]
inc ecx
mov dword [esp + 0x44], ecx
mov dword [esp + 0x13c], eax
mov dword [esp + 0x140], edi
mov word [esp + 0x144], 0
lea ecx, [esp + 0x3c]
lea edx, [esp + 0x13c]
call fcn.1004b4a0
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x40]
jne 0x1007a12e
lea ecx, [esp + 0x3c]
call fcn.1003f920
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
mov word [eax + edx*2], 0x22
inc edx
test esi, esi
mov dword [esp + 0x44], edx
je 0x1007a1d7
shl esi, 2
lea edi, [esi + esi*4]
movzx esi, byte [esp + 0xc]
mov edx, dword [esp + 0x44]
cmp edx, dword [esp + 0x40]
jne 0x1007a167
lea ecx, [esp + 0x3c]
call fcn.1003f920
mov edx, dword [esp + 0x44]
mov eax, dword [esp + 0x3c]
mov word [eax + edx*2], 0x20
inc edx
mov dword [esp + 0x44], edx
lea edx, [esp + 0x3c]
lea ecx, [esp + 0xcc]
push esi
push ebx
call fcn.1006f670
add esp, 8
movzx eax, byte [esp + 0xcc]
cmp al, 4
jne 0x1007a72f
add ebx, 0x14
add edi, 0xffffffec
jne 0x1007a150
mov eax, dword [esp + 0x3c]
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov cl, 1
mov dword [esp + 0x20], ecx
test eax, eax
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], edx
jne 0x1007a1f5
jmp 0x1007a77a
mov ecx, dword [esp + 0x10]
jmp 0x10079372
mov ebx, dword [esp + 8]
mov edx, dword [esp + 0x10]
mov edi, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov cl, 1
mov dword [esp + 0x20], ecx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x14], edx
cmp esi, edi
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], edi
mov dword [esp + 0x108], esi
jne 0x1007a22a
lea ecx, [esp + 0x100]
mov edx, esi
call fcn.1003f920
mov eax, dword [esp + 0x100]
mov esi, dword [esp + 0x108]
mov ecx, dword [esp + 4]
mov word [eax + esi*2], 0
inc esi
mov eax, 0x400
mov edx, 0x608
mov dword [esp + 0x108], esi
cmp byte [ecx + 0x64], 0
cmove edx, eax
or edx, dword [ecx + 0x54]
cmp dword [esp + 0x120], 0
mov dword [esp + 0x138], edx
je 0x1007a7fb
mov edi, dword [esp + 0x12c]
mov esi, dword [esp + 0x124]
mov ebx, dword [esp + 0x128]
mov ecx, 2
mov edx, 0
mov dword [esp + 0xa8], 2
mov dword [esp + 0xac], 0
mov dword [esp + 0xb0], 0
test edi, edi
mov dword [esp + 0x80], esi
mov dword [esp + 0x84], ebx
mov dword [esp + 0x88], edi
jne 0x1007a2ef
mov al, 1
mov dword [esp], eax
lea ecx, [esp + 0xa8]
xor edx, edx
call fcn.1003f920
mov eax, dword [esp + 0xa8]
mov edx, dword [esp + 0xb0]
mov word [eax + edx*2], 0
inc edx
mov ecx, eax
mov dword [esp + 0xb0], edx
xor eax, eax
test esi, esi
mov dword [esp + 0x110], edx
lea edx, [esp + 0x13c]
mov dword [esp + 0x11c], 0
setne al
cmove edi, esi
mov dword [esp + 0x13c], eax
mov dword [esp + 0x140], 0
mov dword [esp + 0x144], esi
mov dword [esp + 0x148], ebx
mov dword [esp + 0x14c], eax
mov dword [esp + 0x150], 0
mov dword [esp + 0x154], esi
mov dword [esp + 0x158], ebx
mov dword [esp + 0x15c], edi
lea edi, [esp + 0x3c]
xor esi, esi
mov ebx, ecx
mov ecx, edi
call fcn.1003c2b0
mov eax, dword [esp + 0x3c]
test eax, eax
je 0x1007ae3b
mov edx, dword [esp + 0x44]
lea ecx, [edx + edx*8]
lea ecx, [ecx + ecx*2]
add ecx, edx
cmp byte [eax + ecx + 0xcc], 2
je 0x1007ae3b
shl edx, 4
mov dword [esp + 0x18], esi
mov dword [esp + 0xa4], ebx
mov esi, dword [eax + edx]
movzx ebx, byte [eax + edx + 0xc]
mov dword [esp], esi
mov esi, dword [eax + edx + 4]
mov edx, dword [eax + edx + 8]
mov byte [esp + 0x10f], bl
mov dword [esp + 0xc], edx
mov edx, dword [eax + ecx + 0xb4]
mov dword [esp + 0x24], esi
mov esi, dword [eax + ecx + 0xc4]
mov dword [esp + 0x28], edx
mov edx, dword [eax + ecx + 0xb8]
mov dword [esp + 0xfc], esi
mov dword [esp + 0x114], edx
mov edx, dword [eax + ecx + 0xbc]
mov dword [esp + 0x118], edx
mov edx, dword [eax + ecx + 0xc0]
mov ecx, dword [eax + ecx + 0xc8]
xor eax, eax
add ecx, edx
mov dword [esp + 0xf8], edx
mov dword [esp + 0x90], ecx
jmp 0x1007a42b
xor eax, eax
test bx, bx
je 0x1007a795
mov bx, 1
test ax, ax
jne 0x1007a420
cmp edx, ecx
je 0x1007a4da
movzx eax, byte [edx]
test al, al
js 0x1007a448
inc edx
mov esi, eax
jmp 0x1007a4a3
movzx ecx, byte [edx + 1]
mov esi, eax
and esi, 0x1f
and ecx, 0x3f
cmp al, 0xdf
jbe 0x1007a494
movzx edi, byte [edx + 2]
shl ecx, 6
and edi, 0x3f
or edi, ecx
cmp al, 0xf0
jb 0x1007a4ac
movzx eax, byte [edx + 3]
and esi, 7
shl edi, 6
add edx, 4
shl esi, 0x12
and eax, 0x3f
or eax, edi
or esi, eax
mov ecx, dword [esp + 0x90]
cmp esi, 0xffff
lea edi, [esp + 0x3c]
jbe 0x1007a4a3
jmp 0x1007a4c7
shl esi, 6
add edx, 2
or esi, ecx
mov ecx, dword [esp + 0x90]
xor eax, eax
mov ebx, esi
jmp 0x1007a422
shl esi, 0xc
add edx, 3
or esi, edi
mov ecx, dword [esp + 0x90]
cmp esi, 0xffff
lea edi, [esp + 0x3c]
jbe 0x1007a4a3
and esi, 0x3ff
or esi, 0xdc00
mov eax, esi
jmp 0x1007a422
mov eax, dword [esp + 0xfc]
test eax, eax
je 0x1007a4f7
push 1
push eax
push dword [esp + 0x100]
call fcn.10004680
add esp, 0xc
mov eax, dword [esp + 0xac]
mov edx, dword [esp + 0x110]
mov esi, dword [esp + 0x118]
mov ecx, dword [esp + 0xa4]
sub eax, edx
cmp eax, esi
jae 0x1007a537
lea ecx, [esp + 0xa8]
push esi
call fcn.1003fa60
add esp, 4
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0xb0]
lea eax, [esi + esi]
mov dword [esp + 0xa4], ecx
lea ecx, [ecx + edx*2]
push eax
mov ebx, esi
push dword [esp + 0x2c]
push ecx
mov esi, edx
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [esp + 0x114]
add esi, ebx
mov dword [esp + 0xb0], esi
test eax, eax
je 0x1007a57b
add eax, eax
push 2
push eax
push dword [esp + 0x30]
call fcn.10004680
add esp, 0xc
cmp esi, dword [esp + 0xac]
mov ebx, dword [esp]
jne 0x1007a5a5
lea ecx, [esp + 0xa8]
mov edx, esi
call fcn.1003f920
mov eax, dword [esp + 0xa8]
mov esi, dword [esp + 0xb0]
jmp 0x1007a5ac
mov eax, dword [esp + 0xa4]
and dword [esp + 0xf8], 0xffffff00
add dword [esp + 0xc], ebx
mov word [eax + esi*2], 0x3d
inc esi
mov eax, ebx
mov dword [esp + 0xb0], esi
xor esi, esi
jmp 0x1007a5db
xor esi, esi
test cx, cx
je 0x1007aa91
mov cx, 1
test si, si
jne 0x1007a5d0
cmp eax, dword [esp + 0xc]
je 0x1007a67c
movzx ebx, byte [eax]
test bl, bl
js 0x1007a5fd
mov edx, ebx
mov ebx, dword [esp]
inc eax
jmp 0x1007a673
movzx edi, byte [eax + 1]
mov edx, ebx
and edx, 0x1f
and edi, 0x3f
cmp bl, 0xdf
jbe 0x1007a638
movzx esi, byte [eax + 2]
shl edi, 6
and esi, 0x3f
or esi, edi
cmp bl, 0xf0
jb 0x1007a649
movzx edi, byte [eax + 3]
and edx, 7
shl esi, 6
add eax, 4
shl edx, 0x12
and edi, 0x3f
or edi, esi
or edx, edi
jmp 0x1007a651
mov ebx, dword [esp]
shl edx, 6
add eax, 2
or edx, edi
lea edi, [esp + 0x3c]
jmp 0x1007a673
shl edx, 0xc
add eax, 3
or edx, esi
mov ebx, dword [esp]
lea edi, [esp + 0x3c]
cmp edx, 0xffff
jbe 0x1007a673
and edx, 0x3ff
or edx, 0xdc00
mov esi, edx
jmp 0x1007a5d2
xor esi, esi
mov ecx, edx
jmp 0x1007a5d2
mov esi, edi
mov edi, ebx
shr edi, 8
cmp byte [esp + 0x10f], 2
je 0x1007b943
mov eax, dword [esp + 0xc]
mov dword [esp + 0xcc], ebx
mov dword [esp + 0x11c], edi
mov dword [esp + 0xd0], eax
mov word [esp + 0xd4], 0
lea ecx, [esp + 0xa8]
lea edx, [esp + 0xcc]
call fcn.1004b4a0
mov eax, dword [esp + 0x24]
mov edi, esi
test eax, eax
je 0x1007a6dd
push 1
push eax
push ebx
call fcn.10004680
add esp, 0xc
mov edx, dword [esp + 0xb0]
cmp edx, dword [esp + 0xac]
jne 0x1007a700
lea ecx, [esp + 0xa8]
call fcn.1003f920
mov edx, dword [esp + 0xb0]
mov ebx, dword [esp + 0xa8]
mov esi, dword [esp + 0xf8]
mov word [ebx + edx*2], 0
inc edx
mov dword [esp + 0x110], edx
mov dword [esp + 0xb0], edx
lea edx, [esp + 0x13c]
jmp 0x1007a361
movzx ecx, byte [esp + 0xd3]
movzx esi, word [esp + 0xd1]
mov ebx, dword [esp + 0xcd]
shl ecx, 0x10
mov edi, ebx
or esi, ecx
movzx ecx, al
mov eax, dword [esp + 0x40]
shl edi, 8
test eax, eax
je 0x1007a774
add eax, eax
push 2
push eax
push dword [esp + 0x44]
mov dword [esp + 0xc], ecx
call fcn.10004680
mov ecx, dword [esp + 0xc]
add esp, 0xc
shld esi, ebx, 8
or edi, ecx
mov eax, dword [esp + 0x2c]
mov dword [eax], edi
mov dword [eax + 4], esi
mov dword [eax + 8], 2
mov esi, dword [esp + 8]
xor ebx, ebx
jmp 0x1007b7e1
mov eax, dword [esp + 0xfc]
test eax, eax
je 0x1007a7b2
push 1
push eax
push dword [esp + 0x100]
call fcn.10004680
add esp, 0xc
mov ecx, dword [esp + 0x24]
mov edi, dword [esp + 0x18]
mov eax, dword [esp]
test ecx, ecx
je 0x1007a7cd
push 1
push ecx
push eax
call fcn.10004680
add esp, 0xc
mov ecx, dword [esp + 0x114]
mov eax, dword [esp + 0x28]
or edi, 2
mov esi, 0x100dddf4
test ecx, ecx
je 0x1007aac0
add ecx, ecx
push 2
push ecx
push eax
call fcn.10004680
add esp, 0xc
jmp 0x1007aac0
xor edi, edi
xor ebx, ebx
mov dword [esp], 2
mov eax, dword [esp + 4]
mov dword [esp + 0x18], edi
mov dword [esp + 0xa4], ebx
cmp byte [eax + 0x44], 2
jne 0x1007a82e
xor esi, esi
mov dword [esp + 0x28], 2
xor eax, eax
xor ecx, ecx
jmp 0x1007ab70
mov edx, dword [eax + 0x38]
mov eax, dword [eax + 0x40]
xor ebx, ebx
add eax, edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x90], eax
jmp 0x1007a85b
xor ebx, ebx
test si, si
je 0x1007aa6c
mov si, 1
test bx, bx
jne 0x1007a850
cmp edx, eax
je 0x1007ab0f
movzx ebx, byte [edx]
test bl, bl
js 0x1007a878
inc edx
mov edi, ebx
jmp 0x1007a8e7
movzx ecx, byte [edx + 1]
mov edi, ebx
and edi, 0x1f
and ecx, 0x3f
cmp bl, 0xdf
jbe 0x1007a8b3
movzx eax, byte [edx + 2]
shl ecx, 6
and eax, 0x3f
or eax, ecx
cmp bl, 0xf0
jb 0x1007a8bd
movzx ecx, byte [edx + 3]
and edi, 7
shl eax, 6
add edx, 4
shl edi, 0x12
and ecx, 0x3f
or ecx, eax
or edi, ecx
jmp 0x1007a8c5
shl edi, 6
add edx, 2
or edi, ecx
jmp 0x1007a8e7
shl edi, 0xc
add edx, 3
or edi, eax
mov eax, dword [esp + 0x90]
cmp edi, 0xffff
jbe 0x1007a8e7
and edi, 0x3ff
or edi, 0xdc00
mov ebx, edi
jmp 0x1007a852
xor ebx, ebx
mov esi, edi
jmp 0x1007a852
movzx eax, word [esi + edi*2 - 8]
lea ecx, [eax - 0x42]
cmp ecx, 0x21
ja 0x1007a09d
mov edx, dword [esp + 0x20]
add edx, dword [ecx*4 + 0x1007c2b4]
jmp edx
mov eax, dword [esp + 0x2c]
mov esi, dword [esp + 8]
mov edi, dword [esp + 0x18]
mov dword [eax + 4], 0x100dddf4
mov dword [eax], 2
mov dword [eax + 8], 2
jmp 0x1007b787
mov eax, dword [esp + 0x24]
mov esi, 0x100dddf4
mov ecx, 2
test eax, eax
je 0x1007aab4
push 1
push eax
push ebx
call fcn.10004680
mov ecx, 2
add esp, 0xc
mov edi, dword [esp + 0x11c]
shl edi, 8
or edi, ecx
mov dword [esp], 0
lea ecx, [esp + 0x13c]
call fcn.100363c0
mov eax, dword [esp + 0xac]
test eax, eax
je 0x1007aaf2
add eax, eax
push 2
push eax
push dword [esp + 0xb0]
call fcn.10004680
add esp, 0xc
mov eax, dword [esp + 8]
mov edx, esi
mov esi, eax
mov eax, dword [esp + 0x2c]
mov dword [eax], edi
mov dword [eax + 4], edx
mov dword [eax + 8], 2
jmp 0x1007b79c
mov esi, dword [esp + 0xc]
mov ecx, eax
mov dword [esp + 0x13c], esi
mov dword [esp + 0x140], ecx
mov word [esp + 0x144], 0
lea ecx, [esp + 0x3c]
lea edx, [esp + 0x13c]
call fcn.1004b600
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
cmp edx, eax
jne 0x1007ab5a
lea ecx, [esp + 0x3c]
call fcn.1003f920
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x44]
mov esi, dword [esp + 0x3c]
mov ecx, eax
and ecx, 0xffffff00
mov word [esi + edx*2], 0
mov dword [esp + 0x28], esi
movzx eax, al
pxor xmm0, xmm0
or eax, ecx
movdqu xmmword [esp + 0xa8], xmm0
mov dword [esp + 0x90], eax
push 0x10112100
call sub.KERNEL32.dll_AcquireSRWLockExclusive
mov eax, dword [0x101120d8]
mov dword [esp + 0x114], esi
test eax, 0x7fffffff
je 0x1007abaf
call fcn.1006d910
xor al, 1
jmp 0x1007abb1
xor eax, eax
movzx ebx, byte [0x10112104]
xor ecx, ecx
mov dword [esp + 0x34], 0x10112100
mov dword [esp + 0xc], eax
mov byte [esp + 0x38], al
mov eax, dword [ebp + 8]
lea edx, [esp + 0x130]
mov dword [esp + 0xcc], 0
mov dword [esp + 0xd4], 0
mov dword [esp + 0xdc], 0
mov dword [esp + 0x130], 2
test bl, bl
setne cl
cmp byte [ebp + 0xc], 0
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 4]
cmovne edx, eax
cmp dword [ecx], 6
lea edi, [ecx + 8]
lea esi, [ecx + 0x10]
cmovne edx, ecx
cmp dword [ecx + 8], 6
cmove edi, eax
cmp dword [ecx + 0x10], 6
cmove esi, eax
lea eax, [esp + 0xcc]
lea ecx, [esp + 0x13c]
push eax
push 0xfffffffffffffff6
call fcn.1007c4f0
add esp, 8
movzx eax, byte [esp + 0x13c]
cmp al, 4
jne 0x1007ada4
mov ecx, dword [esp + 0x140]
lea eax, [esp + 0xd4]
mov dword [esp + 0x24], ecx
mov edx, edi
lea ecx, [esp + 0x13c]
push eax
push 0xfffffffffffffff5
call fcn.1007c4f0
add esp, 8
movzx eax, byte [esp + 0x13c]
mov edi, dword [esp + 0x138]
cmp al, 4
jne 0x1007addb
mov ecx, dword [esp + 0x140]
lea eax, [esp + 0xdc]
mov dword [esp + 0xfc], ecx
mov edx, esi
lea ecx, [esp + 0x13c]
push eax
push 0xfffffffffffffff4
call fcn.1007c4f0
add esp, 8
movzx eax, byte [esp + 0x13c]
cmp al, 4
jne 0x1007aea8
mov ecx, dword [esp + 0x140]
cmp dword [esp + 0x24], 0
mov esi, dword [esp + 8]
pxor xmm0, xmm0
mov dword [esp + 0x7c], 0
movdqu xmmword [esp + 0x6c], xmm0
movdqu xmmword [esp + 0x5c], xmm0
movdqu xmmword [esp + 0x4c], xmm0
movdqu xmmword [esp + 0x3c], xmm0
jne 0x1007ad11
cmp dword [esp + 0xfc], 0
jne 0x1007ad11
test ecx, ecx
je 0x1007ad30
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0xfc]
mov dword [esp + 0x68], 0x100
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], edx
mov dword [esp + 0x7c], ecx
mov edx, dword [esp + 4]
mov dword [esp + 0xf8], ecx
mov eax, dword [edx + 0x60]
test eax, eax
mov dword [esp + 0x110], eax
je 0x1007b416
add edx, 0x58
mov dword [esp + 0x3c], 0x48
lea ecx, [esp + 0x80]
call fcn.1007ccf0
mov eax, dword [esp + 0x84]
cmp dword [esp + 0x80], 0
mov ecx, dword [esp + 0x88]
lea edx, [esp + 0x13c]
mov dword [esp + 4], eax
je 0x1007b4f1
mov eax, dword [esp + 0x2c]
mov edx, dword [esp + 4]
mov dword [eax], edx
mov dword [eax + 4], ecx
mov dword [eax + 8], 2
jmp 0x1007b6b1
movzx ecx, byte [esp + 0x13f]
mov edx, dword [esp + 0x2c]
movzx edi, word [esp + 0x13d]
mov esi, dword [esp + 0x140]
mov byte [edx + 3], cl
mov word [edx + 1], di
mov byte [edx], al
mov dword [edx + 4], esi
mov esi, dword [esp + 8]
mov dword [edx + 8], 2
jmp 0x1007b6d2
movzx ecx, byte [esp + 0x13f]
mov edx, dword [esp + 0x2c]
movzx edi, word [esp + 0x13d]
mov esi, dword [esp + 0x140]
mov byte [edx + 3], cl
mov word [edx + 1], di
mov byte [edx], al
mov dword [edx + 4], esi
mov esi, dword [esp + 8]
mov dword [edx + 8], 2
jmp 0x1007b6c9
mov eax, dword [esp + 8]
test eax, eax
je 0x1007ae29
push 1
push eax
push dword [esp + 0x14]
call fcn.10004680
add esp, 0xc
mov byte [esp + 0x34], 2
mov dword [esp + 0x38], 0x100dde18
jmp 0x1007936a
mov dword [esp], 0
lea ecx, [esp + 0x13c]
call fcn.100363c0
mov edx, dword [esp + 0x110]
cmp edx, dword [esp + 0xac]
jne 0x1007ae7f
mov dword [esp], 0
lea ecx, [esp + 0xa8]
call fcn.1003f920
mov ebx, dword [esp + 0xa8]
mov edx, dword [esp + 0xb0]
mov word [ebx + edx*2], 0
mov esi, dword [esp + 8]
mov eax, dword [esp + 0xa8]
mov edi, dword [esp + 0xac]
test eax, eax
mov dword [esp], eax
jne 0x1007a806
inc edx
jmp 0x1007aafa
movzx ecx, byte [esp + 0x13f]
mov edx, dword [esp + 0x2c]
movzx edi, word [esp + 0x13d]
mov esi, dword [esp + 0x140]
mov byte [edx + 3], cl
mov word [edx + 1], di
mov byte [edx], al
mov dword [edx + 4], esi
mov esi, dword [esp + 8]
mov dword [edx + 8], 2
jmp 0x1007b6bd
mov dword [esp + 0x3c], 0x44
lea edx, [esp + 0x3c]
jmp 0x1007b51a
mov ecx, dword [esp + 0x140]
mov edi, dword [esp + 0x144]
mov esi, eax
mov dword [esp + 0x10], ecx
jmp 0x1007a080
or edi, 0x80000
mov dword [esp + 0x118], ecx
lea esi, [esp + 0x3c]
mov ecx, 0x11
mov eax, edi
mov edi, edx
rep movsd dword es:[edi], dword [esi]
mov edi, eax
mov eax, dword [esp + 4]
mov dword [esp + 0x180], eax
mov esi, dword [esp + 0x100]
lea eax, [esp + 0xa8]
push eax
push edx
push dword [esp + 0x11c]
push dword [esp + 0xb0]
push edi
push 1
push 0
push 0
push esi
push dword [esp + 0x40]
call sub.KERNEL32.dll_CreateProcessW
test eax, eax
je 0x1007b666
mov eax, dword [esp + 0x2c]
movsd xmm1, qword [esp + 0xd4]
movq xmm0, qword [esp + 0xdc]
movsd xmm2, qword [esp + 0xcc]
cmp dword [esp + 0x110], 0
mov ecx, dword [esp + 4]
movsd qword [eax + 0x10], xmm1
movsd xmm1, qword [esp + 0xa8]
movq qword [eax + 0x18], xmm0
movsd qword [eax + 8], xmm2
movsd qword [eax], xmm1
je 0x1007b5a6
mov edx, dword [esp + 0x118]
call fcn.100376b0
push dword [esp + 0xf8]
call sub.KERNEL32.dll_CloseHandle
push dword [esp + 0xfc]
call sub.KERNEL32.dll_CloseHandle
push dword [esp + 0x24]
call sub.KERNEL32.dll_CloseHandle
mov edi, dword [esp + 0x18]
lea ecx, [esp + 0x30]
call fcn.100369f0
mov eax, dword [esp + 0x90]
test eax, eax
je 0x1007b5f0
add eax, eax
push 2
push eax
push dword [esp + 0x30]
call fcn.10004680
add esp, 0xc
test edi, edi
je 0x1007b605
add edi, edi
push 2
push edi
push dword [esp + 8]
call fcn.10004680
add esp, 0xc
mov eax, dword [esp + 0x104]
test eax, eax
je 0x1007b61e
add eax, eax
push 2
push eax
push esi
call fcn.10004680
add esp, 0xc
mov eax, dword [esp + 0x14]
test eax, eax
je 0x1007b637
add eax, eax
push 2
push eax
push dword [esp + 0x24]
call fcn.10004680
add esp, 0xc
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x20]
test ecx, ecx
sete al
or dl, al
mov eax, dword [esp + 8]
cmp dl, 1
je 0x1007948b
add ecx, ecx
push 2
push ecx
push eax
call fcn.10004680
add esp, 0xc
jmp 0x1007948b
call sub.KERNEL32.dll_GetLastError
movzx ecx, word [esp + 0x80]
mov edx, dword [esp + 0x2c]
cmp dword [esp + 0x110], 0
mov esi, dword [esp + 8]
mov word [edx + 1], cx
movzx ecx, byte [esp + 0x82]
mov byte [edx + 3], cl
mov ecx, dword [esp + 4]
mov byte [edx], 0
mov dword [edx + 4], eax
mov dword [edx + 8], 2
je 0x1007b6b1
mov edx, dword [esp + 0x118]
call fcn.100376b0
push dword [esp + 0xf8]
call sub.KERNEL32.dll_CloseHandle
push dword [esp + 0xfc]
call sub.KERNEL32.dll_CloseHandle
push dword [esp + 0x24]
call sub.KERNEL32.dll_CloseHandle
cmp dword [esp + 0xcc], 0
je 0x1007b6e8
push dword [esp + 0xd0]
call sub.KERNEL32.dll_CloseHandle
cmp dword [esp + 0xd4], 0
je 0x1007b6fe
push dword [esp + 0xd8]
call sub.KERNEL32.dll_CloseHandle
cmp dword [esp + 0xdc], 0
je 0x1007b714
push dword [esp + 0xe0]
call sub.KERNEL32.dll_CloseHandle
test bl, bl
je 0x1007b736
cmp byte [esp + 0xc], 0
mov edi, dword [esp + 0x18]
jne 0x1007b761
mov eax, dword [0x101120d8]
test eax, 0x7fffffff
je 0x1007b761
call fcn.1006d910
jmp 0x1007b752
cmp byte [esp + 0xc], 0
mov edi, dword [esp + 0x18]
jne 0x1007b761
mov eax, dword [0x101120d8]
test eax, 0x7fffffff
je 0x1007b761
call fcn.1006d910
mov esi, dword [esp + 8]
test al, al
jne 0x1007b761
mov byte [0x10112104], 1
push 0x10112100
call sub.KERNEL32.dll_ReleaseSRWLockExclusive
mov eax, dword [esp + 0x90]
test eax, eax
je 0x1007b787
add eax, eax
push 2
push eax
push dword [esp + 0x30]
call fcn.10004680
add esp, 0xc
test edi, edi
je 0x1007b79c
add edi, edi
push 2
push edi
push dword [esp + 8]
call fcn.10004680
add esp, 0xc
mov eax, dword [esp + 0x104]
test eax, eax
je 0x1007b7bb
add eax, eax
push 2
push eax
push dword [esp + 0x108]
call fcn.10004680
add esp, 0xc
mov eax, dword [esp + 0x14]
test eax, eax
je 0x1007b7d4
add eax, eax
push 2
push eax
push dword [esp + 0x24]
call fcn.10004680
add esp, 0xc
cmp byte [esp + 0x20], 0
mov bl, 1
jne 0x1007948b
mov eax, dword [esp + 0x10]
test eax, eax
je 0x1007b7f7
add eax, eax
push 2
push eax
push esi
call fcn.10004680
add esp, 0xc
test bl, bl
je 0x10079382
jmp 0x1007948b
mov eax, dword [esp + 0x140]
mov edi, dword [esp + 0x144]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 8]
test eax, eax
je 0x1007a080
push 1
push eax
push dword [esp + 0x14]
call fcn.10004680
add esp, 0xc
jmp 0x1007a080
mov esi, dword [esp + 0x24]
movzx ecx, bl
jmp 0x1007aabb
call sub.KERNEL32.dll_GetLastError
mov byte [esp + 0xcc], 0
mov dword [esp + 0xd0], eax
lea eax, [esp + 0xcc]
mov dword [esp + 0x3c], 0x100ddd94
mov dword [esp + 0x40], 1
mov dword [esp + 0x4c], 0
mov dword [esp + 0xa8], eax
lea eax, [esp + 0xa8]
mov dword [esp + 0xac], 0x1005b9e0
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], 1
push 0x100dddc4
lea eax, [esp + 0x40]
push eax
call fcn.100b0d70
add esp, 8
jmp 0x1007bc0a
call fcn.100a3290
jmp 0x1007bc0a
push esi
push 1
call fcn.100a32d0
add esp, 8
jmp 0x1007bc0a
call fcn.100a3290
jmp 0x1007bc0a
call fcn.100a3290
jmp 0x1007bc0a
push ebx
push 1
call fcn.100a32d0
add esp, 8
jmp 0x1007bc0a
push ebx
push 2
call fcn.100a32d0
add esp, 8
jmp 0x1007bc0a
push 0x100da9d8
push 0x21
push str.assertion_failed:_self.height___0
call fcn.100b0df0
add esp, 0xc
jmp 0x1007bc0a
mov dword [esp + 0x10], 4
push dword [esp + 0x10]
push 1
call fcn.100a32d0
add esp, 8
jmp 0x1007bc0a
push 0x100de4c0
push 0x28
push 0x100dab04
call fcn.100b0df0
add esp, 0xc
jmp 0x1007bc0a
push 0x100de4c0
push 0x28
push 0x100dab04
call fcn.100b0df0
add esp, 0xc
jmp 0x1007bc0a
call fcn.100a3290
jmp 0x1007bc0a
push 0x100de4b0
push eax
push esi
call fcn.100b6af0
add esp, 0xc
jmp 0x1007bc0a
push 0x100da18c
push ebx
push eax
mov esi, dword [esp + 0x14]
call fcn.100b6a90
add esp, 0xc
jmp 0x1007bc0a
push 0x100de4b0
push eax
push esi
call fcn.100b6af0
add esp, 0xc
jmp 0x1007bc0a
ud2