Function at 0x443560
Capabilities:
Encode data using xor
Get common file path

Disassembly:
push ebp
lea ebp, [esp - 0x1f8]
sub esp, 0x1f8
push 0xfffffffffffffffe
push 0x470918
push 0x408890
mov eax, dword fs:[0]
push eax
sub esp, 0x3c
mov eax, dword [0x473534]
xor dword [ebp - 8], eax
xor eax, ebp
mov dword [ebp + 0x1f4], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0x10]
mov dword fs:[0], eax
xor esi, esi
mov dword [ebp - 0x1c], esi
lea edi, [esi + 0x1d]
mov ebx, dword [sym.imp.KERNEL32.dll_GetSystemWindowsDirectoryW]
test esi, esi
jle 0x4435b9
lea esi, [esi + esi*4]
mov dword [ebp - 0x1c], esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
mov ecx, esi
sub ecx, eax
jne 0x4435d8
mov esi, 0xb
mov dword [ebp - 0x1c], esi
push 0xfa
lea edx, [ebp]
push edx
call ebx
sub edi, 1
jne 0x4435af
xor ecx, ecx
lea ebx, [ebx]
xor esi, ecx
mov dword [ebp - 0x1c], esi
jge 0x4435fc
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443623
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 0x15
jl 0x4435f0
xor ecx, ecx
lea ecx, [ecx]
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x44364f
cmp eax, 4
je 0x44364f
and esi, ecx
jmp 0x443651
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 0x1b
jl 0x443630
push 0xfa
lea eax, [ebp]
push eax
mov edi, dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
call edi
mov dword [ebp - 4], 0
xor ecx, ecx
mov dword [ebp - 0x40], ecx
cmp ecx, 8
jge 0x4436c2
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x443691
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x4436ba
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x4436bd
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x443676
mov dword [ebp - 4], 0xfffffffe
call fcn.004436fe
xor ecx, ecx
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x443708
cmp eax, 4
je 0x443708
and esi, ecx
jmp 0x44370a
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 0x11
jl 0x4436d0
push 0xfa
lea eax, [ebp]
push eax
call edi
xor ecx, ecx
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea edx, [edx + edx*2]
mov eax, ecx
sub eax, edx
cmp eax, 1
jne 0x44373b
and esi, ecx
jmp 0x44373d
or esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 0xe
jl 0x443722
xor ecx, ecx
lea ebx, [ebx]
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea edx, [edx + edx*2]
mov eax, ecx
sub eax, edx
cmp eax, 1
jne 0x443769
and esi, ecx
jmp 0x44376b
or esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 0x14
jl 0x443750
xor ecx, ecx
jmp 0x443780
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x44379f
cmp eax, 4
je 0x44379f
and esi, ecx
jmp 0x4437a1
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 2
jl 0x443780
push 0xfa
lea eax, [ebp]
push eax
call edi
xor eax, eax
lea esp, [esp]
or esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 0x10
jl 0x4437c0
test esi, esi
jle 0x4437d7
lea esi, [esi + esi*2]
mov dword [ebp - 0x1c], esi
mov eax, 0x2e8ba2e9
imul esi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0xb
mov edx, esi
sub edx, ecx
jne 0x4437fb
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], 1
xor ecx, ecx
mov dword [ebp - 0x4c], ecx
cmp ecx, 9
jge 0x443850
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x44381f
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x443848
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x44384b
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x443804
mov dword [ebp - 4], 0xfffffffe
call fcn.004438ba
mov dword [ebp - 4], 2
xor ecx, ecx
mov dword [ebp - 0x28], ecx
cmp ecx, 7
jge 0x4438c4
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x443880
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x4438a9
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x4438ac
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x443865
mov dword [ebp - 4], 0xfffffffe
call fcn.004439a1
xor eax, eax
or esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 2
jl 0x4438d2
test esi, esi
jle 0x4438e9
lea esi, [esi + esi*2]
mov dword [ebp - 0x1c], esi
mov eax, 0x2e8ba2e9
imul esi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0xb
mov edx, esi
sub edx, ecx
jne 0x44390d
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov dword [ebp - 0x1c], esi
test esi, esi
jge 0x443916
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov edx, esi
sub edx, ecx
jne 0x443943
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], 3
xor ecx, ecx
mov dword [ebp - 0x48], ecx
cmp ecx, 3
jge 0x4439ab
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x443967
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x443990
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443993
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x44394c
mov dword [ebp - 4], 0xfffffffe
call fcn.00443a15
mov dword [ebp - 4], 4
xor ecx, ecx
mov dword [ebp - 0x30], ecx
cmp ecx, 4
jge 0x443a1f
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x4439db
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x443a04
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443a07
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x4439c0
mov dword [ebp - 4], 0xfffffffe
call fcn.00443a52
xor ecx, ecx
lea ecx, [ecx]
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea edx, [edx + edx*2]
mov eax, ecx
sub eax, edx
cmp eax, 1
jne 0x443a5c
and esi, ecx
jmp 0x443a5e
or esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 6
jl 0x443a30
mov edi, 5
mov edi, edi
test esi, esi
jle 0x443a7a
lea esi, [esi + esi*4]
mov dword [ebp - 0x1c], esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov edx, esi
sub edx, ecx
jne 0x443a99
mov esi, 0xb
mov dword [ebp - 0x1c], esi
push 0xfa
lea eax, [ebp]
push eax
call ebx
sub edi, 1
jne 0x443a70
mov dword [ebp - 4], 5
xor ecx, ecx
mov dword [ebp - 0x20], ecx
cmp ecx, 3
jge 0x443afe
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x443acd
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x443af6
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443af9
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x443ab2
mov dword [ebp - 4], 0xfffffffe
call fcn.00443bf2
xor ecx, ecx
lea esp, [esp]
xor esi, ecx
mov dword [ebp - 0x1c], esi
jge 0x443b1c
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443b43
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 3
jl 0x443b10
xor eax, eax
lea ecx, [ecx]
or esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 3
jl 0x443b50
test esi, esi
jle 0x443b67
lea esi, [esi + esi*2]
mov dword [ebp - 0x1c], esi
mov eax, 0x2e8ba2e9
imul esi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0xb
mov edx, esi
sub edx, ecx
jne 0x443b8b
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov dword [ebp - 0x1c], esi
xor ecx, ecx
lea ecx, [ecx]
xor esi, ecx
mov dword [ebp - 0x1c], esi
jge 0x443b9c
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443bc3
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 5
jl 0x443b90
xor ecx, ecx
lea ecx, [ecx]
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea edx, [edx + edx*2]
mov eax, ecx
sub eax, edx
cmp eax, 1
jne 0x443bfc
and esi, ecx
jmp 0x443bfe
or esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 6
jl 0x443bd0
mov dword [ebp - 0x1c], esi
test esi, esi
jge 0x443c15
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov edx, esi
sub edx, ecx
jne 0x443c3c
xor esi, esi
mov dword [ebp - 0x1c], esi
xor eax, eax
mov edi, edi
or esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 5
jl 0x443c40
test esi, esi
jle 0x443c57
lea esi, [esi + esi*2]
mov dword [ebp - 0x1c], esi
mov eax, 0x2e8ba2e9
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0xb
mov ecx, esi
sub ecx, eax
jne 0x443c7b
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov dword [ebp - 0x1c], esi
mov edi, 8
test esi, esi
jle 0x443c8a
lea esi, [esi + esi*4]
mov dword [ebp - 0x1c], esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax + eax*2]
mov eax, esi
sub eax, edx
jne 0x443ca9
mov esi, 0xb
mov dword [ebp - 0x1c], esi
push 0xfa
lea ecx, [ebp]
push ecx
call ebx
sub edi, 1
jne 0x443c80
mov dword [ebp - 4], 6
xor ecx, ecx
mov dword [ebp - 0x38], ecx
cmp ecx, 3
jge 0x443d0e
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x443cdd
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x443d06
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443d09
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x443cc2
mov dword [ebp - 4], 0xfffffffe
call fcn.00443db9
xor ecx, ecx
lea esp, [esp]
xor esi, ecx
mov dword [ebp - 0x1c], esi
jge 0x443d2c
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443d53
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 8
jl 0x443d20
mov dword [ebp - 4], 7
xor ecx, ecx
mov dword [ebp - 0x24], ecx
cmp ecx, 3
jge 0x443dc3
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x443d7f
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x443da8
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443dab
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x443d64
mov dword [ebp - 4], 0xfffffffe
call fcn.00443e38
xor ecx, ecx
xor esi, ecx
mov dword [ebp - 0x1c], esi
jge 0x443ddd
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x443e04
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 6
jl 0x443dd1
xor ecx, ecx
mov edi, edi
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x443e42
cmp eax, 4
je 0x443e42
and esi, ecx
jmp 0x443e44
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 7
jl 0x443e10
push 0xfa
lea eax, [ebp]
push eax
mov edi, dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
call edi
xor ecx, ecx
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x443e81
cmp eax, 4
je 0x443e81
and esi, ecx
jmp 0x443e83
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 2
jl 0x443e62
push 0xfa
lea eax, [ebp]
push eax
call edi
xor eax, eax
jmp 0x443ea0
xor esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 2
jl 0x443ea0
test esi, esi
jge 0x443eb6
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov edx, esi
sub edx, ecx
jne 0x443ee3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov dword [ebp - 0x1c], esi
xor ecx, ecx
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x443f04
cmp eax, 4
je 0x443f04
and esi, ecx
jmp 0x443f06
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 3
jl 0x443ee5
push 0xfa
lea eax, [ebp]
push eax
call edi
xor ecx, ecx
mov edi, edi
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x443f3f
cmp eax, 4
je 0x443f3f
and esi, ecx
jmp 0x443f41
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 5
jl 0x443f20
push 0xfa
lea eax, [ebp]
push eax
call edi
xor eax, eax
lea esp, [esp]
xor esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 7
jl 0x443f60
test esi, esi
jge 0x443f76
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov edx, esi
sub edx, ecx
jne 0x443fa3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov dword [ebp - 0x1c], esi
xor eax, eax
or esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 3
jl 0x443fa5
test esi, esi
jle 0x443fbc
lea esi, [esi + esi*2]
mov dword [ebp - 0x1c], esi
mov eax, 0x2e8ba2e9
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0xb
mov ecx, esi
sub ecx, eax
jne 0x443fe0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], 8
xor ecx, ecx
mov dword [ebp - 0x2c], ecx
cmp ecx, 8
jge 0x444035
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x444004
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x44402d
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x444030
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x443fe9
mov dword [ebp - 4], 0xfffffffe
call fcn.004440a5
mov dword [ebp - 4], 9
xor ecx, ecx
mov dword [ebp - 0x34], ecx
cmp ecx, 5
jge 0x4440af
mov eax, esi
cdq
sub eax, edx
sar eax, 1
and eax, 0x80000001
jns 0x444065
dec eax
or eax, 0xfffffffe
inc eax
cmp eax, 1
je 0x44408e
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x444091
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
jmp 0x44404a
mov dword [ebp - 4], 0xfffffffe
call fcn.004440e8
xor ecx, ecx
lea ecx, [ecx]
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea edx, [edx + edx*2]
mov eax, ecx
sub eax, edx
cmp eax, 1
jne 0x4440f2
and esi, ecx
jmp 0x4440f4
or esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 5
jl 0x4440c0
xor ecx, ecx
xor esi, ecx
mov dword [ebp - 0x1c], esi
jge 0x44410d
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x444134
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 3
jl 0x444101
xor ecx, ecx
mov edi, edi
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x44415f
cmp eax, 4
je 0x44415f
and esi, ecx
jmp 0x444161
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 3
jl 0x444140
push 0xfa
lea eax, [ebp]
push eax
call edi
test esi, esi
jle 0x444181
lea esi, [esi + esi*4]
mov dword [ebp - 0x1c], esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov edx, esi
sub edx, ecx
jne 0x4441a0
mov esi, 0xb
mov dword [ebp - 0x1c], esi
push 0xfa
lea eax, [ebp]
push eax
call ebx
xor eax, eax
lea ecx, [ecx]
or esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 4
jl 0x4441b0
test esi, esi
jle 0x4441c7
lea esi, [esi + esi*2]
mov dword [ebp - 0x1c], esi
mov eax, 0x2e8ba2e9
imul esi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0xb
mov edx, esi
sub edx, ecx
jne 0x4441eb
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov dword [ebp - 0x1c], esi
mov edi, 4
test esi, esi
jle 0x4441fa
lea esi, [esi + esi*4]
mov dword [ebp - 0x1c], esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
mov ecx, esi
sub ecx, eax
jne 0x444219
mov esi, 0xb
mov dword [ebp - 0x1c], esi
push 0xfa
lea edx, [ebp]
push edx
call ebx
sub edi, 1
jne 0x4441f0
xor ecx, ecx
jmp 0x444230
xor esi, ecx
mov dword [ebp - 0x1c], esi
jge 0x44423c
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea edx, [eax*8]
sub edx, eax
mov eax, esi
sub eax, edx
jne 0x444263
xor esi, esi
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 2
jl 0x444230
test esi, esi
jle 0x444275
lea esi, [esi + esi*4]
mov dword [ebp - 0x1c], esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov edx, esi
sub edx, ecx
jne 0x444294
mov esi, 0xb
mov dword [ebp - 0x1c], esi
push 0xfa
lea eax, [ebp]
push eax
call ebx
xor ecx, ecx
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea edx, [edx + edx*2]
mov eax, ecx
sub eax, edx
cmp eax, 1
jne 0x4442ba
and esi, ecx
jmp 0x4442bc
or esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 2
jl 0x4442a1
xor eax, eax
lea esp, [esp]
or esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 4
jl 0x4442d0
test esi, esi
jle 0x4442e7
lea esi, [esi + esi*2]
mov dword [ebp - 0x1c], esi
mov eax, 0x2e8ba2e9
imul esi
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
imul ecx, ecx, 0xb
mov edx, esi
sub edx, ecx
jne 0x44430b
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov dword [ebp - 0x1c], esi
push 0xfa
lea eax, [ebp]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
mov edi, 4
nop
test esi, esi
jle 0x44432a
lea esi, [esi + esi*4]
mov dword [ebp - 0x1c], esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax + eax*2]
mov edx, esi
sub edx, ecx
jne 0x444349
mov esi, 0xb
mov dword [ebp - 0x1c], esi
push 0xfa
lea eax, [ebp]
push eax
call ebx
sub edi, 1
jne 0x444320
xor ecx, ecx
jmp 0x444360
mov eax, 0xcccccccd
mul ecx
shr edx, 2
lea edx, [edx + edx*4]
mov eax, ecx
sub eax, edx
cmp eax, 1
je 0x44437f
cmp eax, 4
je 0x44437f
and esi, ecx
jmp 0x444381
sub esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 3
jl 0x444360
push 0xfa
lea eax, [ebp]
push eax
call dword [sym.imp.KERNEL32.dll_GetSystemDirectoryW]
xor eax, eax
lea ecx, [ecx]
xor esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 4
jl 0x4443a0
test esi, esi
jge 0x4443b6
neg esi
mov dword [ebp - 0x1c], esi
mov eax, 0x92492493
imul esi
add edx, esi
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
lea ecx, [eax*8]
sub ecx, eax
mov edx, esi
sub edx, ecx
jne 0x4443e3
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov esi, eax
mov dword [ebp - 0x1c], esi
xor ecx, ecx
mov eax, 0xaaaaaaab
mul ecx
shr edx, 1
lea eax, [edx + edx*2]
mov edx, ecx
sub edx, eax
cmp edx, 1
jne 0x4443fe
and esi, ecx
jmp 0x444400
or esi, ecx
mov dword [ebp - 0x1c], esi
add ecx, 1
cmp ecx, 2
jl 0x4443e5
mov edi, 2
test esi, esi
jle 0x44441a
lea esi, [esi + esi*4]
mov dword [ebp - 0x1c], esi
mov eax, 0x55555556
imul esi
mov eax, edx
shr eax, 0x1f
add eax, edx
lea eax, [eax + eax*2]
mov ecx, esi
sub ecx, eax
jne 0x444439
mov esi, 0xb
mov dword [ebp - 0x1c], esi
push 0xfa
lea edx, [ebp]
push edx
call ebx
sub edi, 1
jne 0x444410
xor eax, eax
jmp 0x444450
or esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 3
jl 0x444450
test esi, esi
jle 0x444467
lea esi, [esi + esi*2]
mov dword [ebp - 0x1c], esi
mov eax, 0x2e8ba2e9
imul esi
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
imul eax, eax, 0xb
mov ecx, esi
sub ecx, eax
jne 0x44448b
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, eax
mov dword [ebp - 0x1c], esi
xor eax, eax
lea ecx, [ecx]
xor esi, eax
mov dword [ebp - 0x1c], esi
add eax, 1
cmp eax, 4
jl 0x444490
test esi, esi
jge 0x4444a6