Function at 0x10014827
Capabilities:
Check for software breakpoints
Create directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
add esp, 0xfffff88c
mov eax, dword [ebp + 0x14]
push ebx
lea ecx, [eax + 0xd8]
push esi
push edi
mov dword [esp + 0x64], eax
mov dword [esp + 0x80], ecx
cmp eax, ecx
ja 0x1001420d
fld qword [0x10041920]
fld1
fld qword [esp + 0x40]
fld qword [esp + 0x38]
jmp 0x10013d0d
fld1
fld qword [0x10041920]
fxch st(3)
fxch st(1)
fxch st(2)
fxch st(1)
mov eax, dword [esp + 0x64]
cmp eax, 0x3559
ja 0x100145ab
je 0x1001446b
cmp eax, 0x17fa
ja 0x10014218
je 0x1001483a
cmp eax, 0x17d6
ja 0x1001419b
je 0x10014188
sub eax, 0x2f1
je 0x10014059
sub eax, 0xc
jne 0x10014831
mov eax, dword [ebp + 0x10]
xor edi, edi
mov ebx, 5
mov dword [esp + 0x34], ebx
cmp dword [eax], edi
jle 0x10014831
fld qword [esp + 0xd0]
mov eax, 0x4160
fld qword [esp + 0xc0]
mov dword [esp + 0x24], eax
jmp 0x10013d9a
mov ebx, dword [esp + 0x34]
mov eax, 0x4160
mov dword [esp + 0x24], eax
jmp 0x10013d9a
mov ebx, dword [esp + 0x34]
cmp eax, 0x41ff
ja 0x10013f15
je 0x10013e94
sub eax, 0x4160
je 0x10013e8e
sub eax, 0x35
je 0x10013e36
sub eax, 0x35
jne 0x10013e45
mov ecx, dword [ebp + 0x10]
mov eax, dword [ecx]
cmp ebx, eax
jge 0x10013dd4
inc ebx
mov dword [esp + 0x34], ebx
jmp 0x10013dda
mov ebx, eax
mov dword [esp + 0x34], eax
lea edx, [edi + 1]
mov dword [esp + 0x2c], edx
cmp edx, ebx
jge 0x10013e45
mov esi, edx
shl esi, 7
add esi, dword [ebp + 8]
fld qword [esi]
fabs
fld st(4)
fabs
fcompp
fnstsw ax
test ah, 5
jp 0x10013e28
mov ecx, 0x330d
mov eax, ecx
sub eax, 0x330d
je 0x10013e17
sub eax, 0x3b
jne 0x10013e1d
mov dword [esp + 0x60], edx
jmp 0x10013e1d
fstp st(3)
fld qword [esi]
fxch st(3)
add ecx, 0x3b
cmp ecx, 0x3348
jbe 0x10013e03
inc edx
sub esi, 0xffffff80
cmp edx, ebx
jl 0x10013ded
mov dword [esp + 0x2c], edx
jmp 0x10013e45
mov eax, dword [ebp + 8]
fstp st(3)
mov edx, edi
shl edx, 7
fld qword [edx + eax]
fxch st(3)
mov eax, dword [esp + 0x24]
sub eax, 0xffffffcb
mov dword [esp + 0x24], eax
cmp eax, 0x4269
jbe 0x10013d96
mov edx, dword [ebp + 0x10]
inc edi
cmp edi, dword [edx]
jl 0x10013d87
fstp st(5)
fstp st(3)
fxch st(3)
fstp qword [esp + 0xc0]
fxch st(2)
fst qword [esp + 0x38]
fxch st(1)
fstp qword [esp + 0xd0]
fxch st(1)
fst qword [esp + 0x40]
jmp case.0x10014763.16869
mov dword [esp + 0x60], edi
jmp 0x10013e45
mov eax, dword [esp + 0x60]
mov ecx, dword [ebp + 0xc]
mov dword [ecx + edi*4], eax
cmp eax, edi
je 0x10013e45
xor ecx, ecx
mov edx, 0x61d2
mov eax, edx
sub eax, 0x61d2
je 0x10013eea
sub eax, 2
je 0x10013ecf
sub eax, 2
jne 0x10013efb
mov eax, dword [esp + 0x60]
fxch st(1)
mov esi, dword [ebp + 8]
shl eax, 4
add eax, ecx
fst qword [esi + eax*8]
jmp 0x10013ef9
mov esi, dword [esp + 0x60]
mov eax, dword [ebp + 8]
shl esi, 4
mov ebx, edi
add esi, ecx
fld qword [eax + esi*8]
shl ebx, 4
add ebx, ecx
fstp qword [eax + ebx*8]
jmp 0x10013efb
mov esi, dword [ebp + 8]
fstp st(1)
mov eax, edi
shl eax, 4
add eax, ecx
fld qword [esi + eax*8]
fxch st(1)
add edx, 2
cmp edx, 0x61d6
jbe 0x10013ea9
inc ecx
cmp ecx, 0xb
jl 0x10013ea4
mov dword [esp + 0x2c], ecx
jmp 0x10013e45
sub eax, 0x4234
je 0x1001403b
sub eax, 0x35
jne 0x10013e45
lea esi, [edi + 1]
cmp esi, ebx
jge 0x10013e45
mov edx, dword [ebp + 8]
mov eax, esi
shl eax, 7
add eax, edx
mov dword [esp + 0x30], eax
add eax, 0x10
mov ebx, 0x19fa
mov ecx, ebx
sub ecx, 0x19fa
je 0x10014008
sub ecx, 0xb
je 0x10013f74
sub ecx, 0xb
jne 0x10014014
fldz
mov ecx, dword [esp + 0x30]
fstp qword [ecx + 0x50]
jmp 0x10014014
mov ecx, edi
fxch st(2)
shl ecx, 4
sub ecx, edi
add ecx, esi
fst qword [edx + ecx*8 + 0x50]
mov ecx, edi
shl ecx, 4
fld qword [edx + ecx*8 + 8]
mov dword [esp + 0x2c], 0xb
fmul st(1)
fsubr qword [eax - 8]
fstp qword [eax - 0x10]
fld qword [edx + ecx*8 + 0x10]
fmul st(1)
fsubr qword [eax]
fstp qword [eax - 8]
fld qword [edx + ecx*8 + 0x18]
fmul st(1)
fsubr qword [eax + 8]
fstp qword [eax]
fld qword [edx + ecx*8 + 0x20]
fmul st(1)
fsubr qword [eax + 0x10]
fstp qword [eax + 8]
fld qword [edx + ecx*8 + 0x28]
fmul st(1)
fsubr qword [eax + 0x18]
fstp qword [eax + 0x10]
fld qword [edx + ecx*8 + 0x30]
fmul st(1)
fsubr qword [eax + 0x20]
fstp qword [eax + 0x18]
fld qword [edx + ecx*8 + 0x38]
fmul st(1)
fsubr qword [eax + 0x28]
fstp qword [eax + 0x20]
fld qword [edx + ecx*8 + 0x40]
fmul st(1)
fsubr qword [eax + 0x30]
fstp qword [eax + 0x28]
fld qword [edx + ecx*8 + 0x48]
fmul st(1)
fsubr qword [eax + 0x38]
fstp qword [eax + 0x30]
fld qword [edx + ecx*8 + 0x50]
fmul st(1)
fsubr qword [eax + 0x40]
fstp qword [eax + 0x38]
jmp 0x10014012
mov ecx, dword [esp + 0x30]
fstp st(2)
fld st(1)
fmul qword [ecx]
fxch st(2)
sub ebx, 0xfffffff5
cmp ebx, 0x1a10
jbe 0x10013f4a
sub dword [esp + 0x30], 0xffffff80
inc esi
sub eax, 0xffffff80
cmp esi, dword [esp + 0x34]
jl 0x10013f45
jmp 0x10013e45
fstp st(0)
fld st(2)
fabs
fcomp st(5)
fnstsw ax
test ah, 5
jp 0x10014050
fstp st(2)
fld st(3)
fxch st(2)
fld st(3)
fdiv st(3)
jmp 0x10013e45
mov edi, dword [ebp + 8]
fstp st(3)
xor eax, eax
fstp st(1)
mov dword [esp + 0x24], eax
mov dword [esp + 0x30], eax
lea ebx, [eax + 6]
lea eax, [edi + 0x30]
lea ecx, [edi + 0x10]
mov dword [esp + 0x50], eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x58], 5
mov eax, 0x6f6f
mov dword [esp + 0x54], eax
sub eax, 0x6f6f
je 0x100140d5
sub eax, 0x2d
jne 0x10014151
mov esi, dword [esp + 0x2c]
cmp esi, 0xb
jge 0x10014151
mov edx, dword [esp + 0x30]
mov eax, dword [ebp + 8]
add edx, esi
lea edi, [eax + edx*8]
mov edx, 0xb
sub edx, esi
mov ecx, edx
and ecx, 0x1fffffff
add ecx, ecx
xor eax, eax
add esi, edx
rep stosd dword es:[edi], eax
mov edi, dword [ebp + 8]
mov dword [esp + 0x2c], esi
jmp 0x10014151
mov dword [esp + 0x2c], 0
cmp ebx, 4
jl 0x1001411d
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x50]
lea edx, [ebx - 4]
shr edx, 2
inc edx
lea esi, [edx*4]
mov dword [esp + 0x2c], esi
fld qword [eax - 8]
sub eax, 0xffffffe0
fstp qword [ecx - 0x10]
add ecx, 0x20
dec edx
fld qword [eax - 0x20]
fstp qword [ecx - 0x28]
fld qword [eax - 0x18]
fstp qword [ecx - 0x20]
fld qword [eax - 0x10]
fstp qword [ecx - 0x18]
jne 0x100140fc
cmp dword [esp + 0x2c], ebx
jge 0x10014151
mov ecx, dword [esp + 0x2c]
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x24]
add edx, ecx
add eax, ecx
lea esi, [edi + edx*8]
lea edx, [edi + eax*8 + 0x28]
mov eax, ebx
sub eax, ecx
add ecx, eax
mov dword [esp + 0x2c], ecx
fld qword [edx]
add edx, 8
fstp qword [esi]
sub esi, 0xfffffff8
dec eax
jne 0x10014144
mov eax, dword [esp + 0x54]
sub eax, 0xffffffd3
mov dword [esp + 0x54], eax
cmp eax, 0x6f9c
jbe 0x1001408c
sub dword [esp + 0x34], 0xffffff80
add dword [esp + 0x50], 0x78
sub dword [esp + 0x30], 0xfffffff0
add dword [esp + 0x24], 0xf
inc ebx
dec dword [esp + 0x58]
jne 0x10014083
jmp case.0x10014763.16869
mov ecx, dword [sym.imp.KERNEL32.dll_DebugBreak]
fstp st(3)
fstp st(1)
mov dword [esp + 0x84], ecx
jmp case.0x10014763.16869
sub eax, 0x17e2
fstp st(3)
fstp st(1)
je 0x100141c6
sub eax, 0xc
jne case.0x10014763.16869
mov edx, dword [ebp + 8]
fstp st(1)
mov eax, dword [edx]
fstp st(0)
add eax, 0xc
push eax
call fcn.1002802d
add esp, 4
mov dword [esp + 0x4c], eax
jmp 0x100141e7
mov ecx, dword [esp + 0x84]
fstp st(1)
push ecx
fstp st(0)
push str.DebugBreak__p_n
lea edx, [esp + 0x380]
push edx
call fcn.10027592
sub esp, 0xfffffff4
fld qword [esp + 0x40]
fld qword [esp + 0x38]
fxch st(1)
mov eax, dword [esp + 0x64]
sub eax, 0xfffffff4
mov dword [esp + 0x64], eax
cmp eax, dword [esp + 0x80]
jbe 0x10013cfd
fstp st(1)
fstp st(0)
mov eax, dword [esp + 0x4c]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
fstp st(3)
cmp eax, 0x3535
ja 0x10014425
je 0x100143d1
sub eax, 0x31f6
fstp st(1)
je 0x10014604
sub eax, 0xc
jne case.0x10014763.16869
xor edi, edi
mov dword [esp + 0x24], edi
cmp dword [esp + 0x5c], edi
jle case.0x10014763.16869
xor eax, eax
mov dword [esp + 0x58], eax
mov dword [esp + 0x54], 5
cmp eax, 0xcc
ja case.0x10014269.1
movzx eax, byte [eax + 0x10014874]
jmp dword [eax*4 + 0x1001485c]
mov edx, dword [ebp + 8]
mov ecx, edi
imul ecx, ecx, 0x58
fld qword [ecx + edx + 0x60]
fstp qword [esp + 0xc8]
jmp case.0x10014269.1
mov ebx, dword [ebp + 8]
mov eax, edi
imul eax, eax, 0x58
fld qword [eax + ebx + 8]
fstp qword [esp + 0x90]
test edi, edi
jne 0x1001430c
mov esi, 0x52ef
mov eax, esi
sub eax, 0x52ef
je 0x100142c2
sub eax, 0x3f
jne 0x100142fc
cmp dword [esp + 0x5c], 1
jle 0x100142fc
cmp byte [ebx + 0x68], 0x68
jne 0x100142fc
inc edi
jmp 0x100142fc
mov edx, dword [ebp + 0x10]
fstp st(1)
xor ecx, ecx
fstp st(0)
cmp byte [ebx + 0x10], 0x7b
fld qword [esp + 0x90]
sete cl
push ecx
add esp, 0xfffffff0
fstp qword [esp + 8]
fld qword [esp + 0xac]
fstp qword [esp]
push edx
call fcn.10022c40
fld qword [esp + 0x50]
fld qword [esp + 0x58]
sub esp, 0xffffffe8
sub esi, 0xffffffc1
cmp esi, 0x532e
jbe 0x100142a4
jmp case.0x10014269.1
cmp byte [eax + ebx + 0x10], 0x61
jne case.0x10014269.1
inc edi
jmp case.0x10014269.1
mov ecx, dword [ebp + 8]
mov eax, edi
imul eax, eax, 0x58
fld qword [eax + ecx]
fstp qword [esp + 0x98]
jmp case.0x10014269.1
mov eax, dword [ebp + 8]
lea edx, [edi + 1]
imul edx, edx, 0x58
fld qword [edx + eax]
fstp qword [esp + 0xb8]
jmp case.0x10014269.1
mov ecx, dword [esp + 0x24]
fstp st(1)
mov ebx, dword [ebp + 0x10]
fstp st(0)
push ecx
call fcn.10022a00
fld qword [esp + 0xcc]
mov eax, dword [ebp + 8]
sub esp, 0xfffffffc
push 0
push ebx
add esp, 0xffffffe0
fstp qword [esp + 0x18]
mov edx, edi
fld qword [esp + 0xe0]
imul edx, edx, 0x58
fstp qword [esp + 0x10]
fld qword [esp + 0xb8]
fstp qword [esp + 8]
fld qword [esp + 0xc0]
fstp qword [esp]
lea ecx, [edx + eax + 0x20]
push ecx
call fcn.10022a20
sub esp, 0xffffffd4
fld qword [esp + 0x38]
fld qword [esp + 0x40]
mov eax, dword [esp + 0x58]
add eax, 0x33
dec dword [esp + 0x54]
mov dword [esp + 0x58], eax
jne 0x10014257
inc dword [esp + 0x24]
inc edi
cmp edi, dword [esp + 0x5c]
jl 0x10014249
jmp case.0x10014763.16869
fstp st(2)
lea edx, [esp + 0x108]
fstp st(1)
push edx
fstp qword [esp + 0xdc]
lea eax, [esp + 0xfc]
fld qword [0x10041828]
push eax
fstp qword [esp + 0xe8]
lea ecx, [esp + 0xe0]
fld qword [0x10041868]
push ecx
fstp qword [esp + 0xf4]
fld qword [0x10041c88]
fstp qword [esp + 0xfc]
call fcn.10027260
jmp 0x100141e4
sub eax, 0x3541
fstp st(1)
je 0x1001445c
sub eax, 0xc
jne case.0x10014763.16869
mov edx, dword [0x1092d030]
fstp st(1)
push edx
fstp st(0)
lea eax, [esp + 0xfc]
push eax
lea ecx, [esp + 0x110]
push ecx
call fcn.100229a0
jmp 0x100141e4
mov dword [0x1092d030], 0x400
jmp case.0x10014763.16869
fstp st(3)
mov dword [esp + 0x50], 0x14
mov esi, dword [esp + 0x50]
fstp st(1)
mov dword [esp + 0x24], 0
mov ecx, dword [esp + 0x24]
mov ebx, 1
mov edi, 0x37be
rol ebx, cl
cmp edi, 0x387e
ja 0x10014522
je 0x100144e6
mov eax, edi
sub eax, 0x37be
je 0x100144d1
sub eax, 0x40
je 0x100144c6
sub eax, 0x40
jne 0x10014585
fstp st(1)
fstp st(0)
call fcn.10022140
jmp 0x10014579
mov dword [0x1092d030], ebx
jmp 0x10014585
mov eax, 1
mov ecx, esi
shl eax, cl
mov dword [esp + 0x8c], eax
jmp 0x10014585
mov esi, dword [esp + 0x8c]
fstp st(1)
fstp st(0)
test esi, esi
jle 0x10014517
mov edx, dword [0x1092d030]
push edx
lea eax, [esp + 0xa4]
push eax
lea ecx, [esp + 0x110]
push ecx
call fcn.100229a0
add esp, 0xc
dec esi
jne 0x100144f5
call fcn.10022140
mov esi, dword [esp + 0x50]
jmp 0x10014579
mov eax, edi
sub eax, 0x38be
jne 0x10014585
fstp st(1)
add esp, 0xfffffff0
fstp st(0)
fld qword [esp + 0xb8]
fsub qword [esp + 0x110]
fstp qword [esp + 8]
fld qword [esp + 0xb0]
fsub qword [esp + 0x108]
fstp qword [esp]
call fcn.10005600
fstp st(0)
fld qword [esp + 0xb8]
fstp qword [esp + 8]
fld qword [esp + 0xb0]
fstp qword [esp]
call fcn.10005600
add esp, 0x10
fstp st(0)
fld qword [esp + 0x40]
fld qword [esp + 0x38]
fxch st(1)
sub edi, 0xffffffc0
cmp edi, 0x38fe
jbe 0x10014493
inc dword [esp + 0x24]
dec esi
mov dword [esp + 0x50], esi
cmp esi, 0xd
jg 0x10014483
jmp case.0x10014763.16869
fstp st(3)
fstp st(1)
cmp eax, 0x41d8
ja 0x1001474e
je 0x10014739
cmp eax, 0x41b4
ja 0x100146dc
je 0x10014652
cmp eax, 0x3565
je 0x100145ed
cmp eax, 0x41a8
jne case.0x10014763.16869
mov byte [esp + 0x2b], 1
jmp case.0x10014763.16869
mov eax, 0x3f7c
cmp eax, eax
je 0x1001484d
add eax, 0x21
cmp eax, 0x3f7c
jbe 0x100145f4
mov ecx, dword [ebp + 8]
test ecx, ecx
je case.0x10014763.16904
mov edx, dword [ebp + 0xc]
mov eax, dword [edx]
or eax, eax
jle case.0x10014763.16904
cmp dword [ebp + 0x10], 0
je case.0x10014763.16904
mov edx, eax
imul edx, edx, 0x58
cmp byte [ecx + edx - 0x48], 0x7d
jne 0x10014649
cmp byte [ecx + edx - 0xa0], 0x61
jne 0x10014648
add eax, 0xfffffffe
mov dword [esp + 0x5c], eax
jmp case.0x10014763.16869
dec eax
mov dword [esp + 0x5c], eax
jmp case.0x10014763.16869
mov eax, dword [ebp + 8]
fstp st(1)
push 0
fstp st(0)
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x100146a7
mov esi, 0x7fff
jmp 0x10014670
mov eax, esi
sub eax, 0x7fff
je 0x10014684
sub eax, 0x2d
je 0x1001420d
jmp 0x1001469c
lea ecx, [esp + 0x578]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov byte [esp + 0x4c], 1
sub esi, 0xffffffd3
cmp esi, 0x802c
jbe 0x10014670
lea edx, [esp + 0x150]
push edx
mov ecx, 0xa
mov esi, str.MyFileMappingObject
lea edi, [esp + 0x12c]
lea eax, [esp + 0x154]
rep movsd dword es:[edi], dword [esi]
push eax
lea ecx, [esp + 0x130]
push ecx
call fcn.100272a0
jmp 0x100141e4
sub eax, 0x41c0
je 0x10014712
sub eax, 0xc
jne case.0x10014763.16869
lea edx, [esp + 0x150]
fstp st(1)
push edx
fstp st(0)
push 0x100
push eax
push 4
push eax
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_CreateFileMappingW]
mov dword [esp + 0x68], eax
jmp 0x100141e7
xor eax, eax
mov dword [esp + 0x6c], eax
mov dword [esp + 0x70], eax
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], eax
mov eax, dword [sym.imp.KERNEL32.dll_ProcessIdToSessionId]
mov dword [esp + 0x88], eax
jmp case.0x10014763.16869
cmp dword [esp + 0x68], 0
jne case.0x10014763.16869
mov byte [esp + 0x2b], 0
jmp case.0x10014763.16869
sub eax, 0x41e4
cmp eax, 0x24
ja case.0x10014763.16869
movzx ecx, byte [eax + 0x10014958]
jmp dword [ecx*4 + 0x10014944]
mov edx, dword [esp + 0x88]
fstp st(1)
push edx
fstp st(0)
push str.ProcessIdToSessionId__p_n
lea eax, [esp + 0x180]
push eax
jmp 0x100141df
cmp byte [esp + 0x2b], 0
je case.0x10014763.16869
xor edi, edi
xor esi, esi
lea ebx, [edi + 5]
cmp esi, 0x34
ja case.0x100147a6.1
movzx ecx, byte [esi + 0x10014998]
jmp dword [ecx*4 + 0x10014980]
mov ecx, dword [esp + 0x68]
fstp st(1)
lea edx, [esp + 0x6c]
fstp st(0)
push edx
lea eax, [esp + 0xb8]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_WaitCommEvent]
mov edx, dword [esp + 0x7c]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x1001480e
mov eax, dword [esp + 0x68]
fstp st(1)
push eax
fstp st(0)
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x1001480e
mov dword [esp + 0x70], edi
mov dword [esp + 0x74], edi
jmp case.0x100147a6.1
mov dword [esp + 0x78], edi
jmp case.0x100147a6.1
push edi
fstp st(1)
push edi
fstp st(0)
push 1
push edi
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov dword [esp + 0x7c], eax
mov dword [esp + 0x6c], edi
fld qword [esp + 0x40]
fld qword [esp + 0x38]
fxch st(1)
add esi, 0xd
dec ebx
jne 0x1001479a
jmp case.0x10014763.16869
mov byte [esp + 0x4c], 0
jmp case.0x10014763.16869
fstp st(3)
fstp st(1)
jmp case.0x10014763.16869
mov eax, dword [esp + 0x4c]
fstp st(0)
fstp st(0)
fstp st(1)
fstp st(0)
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
fstp st(1)
pop esi
fstp st(0)
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret