Function at 0x10045e7c
Capabilities:
Access peb ldr_data
Modify service
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x1006b782
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x108
push ebx
push esi
push edi
mov ebx, edx
mov dword [esp + 0xc], 0xfffffff9
xor edi, edi
mov dword [esp + 0x30], ebx
mov dword [esp + 0xb0], ecx
mov dword [esp + 0x10], edi
jmp 0x10045ed0
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xf4], 9
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 4
jl 0x10045ebd
push 3
mov dword [esp + 0x10], 0x14
pop esi
jmp 0x10045f25
mov dword [esp + 0x10], 0xffffffff
mov dword [esp + 0x10], esi
cmp dword [esp + 0x10], edi
jl 0x10045f21
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + eax*4 + 0xf4]
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xf4], ecx
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xf4], ecx
dec dword [esp + 0x10]
jns 0x10045ef6
dec dword [esp + 0xc]
cmp dword [esp + 0xc], 0xffffffec
jge 0x10045ee4
mov dword [esp + 0xc], 0xb7c7ce53
lea ecx, [esp + 0x54]
push esi
call fcn.1000e440
mov dword [esp + 0x11c], edi
lea ecx, [esp + 0x84]
mov dword [esp + 0x18], 0xb275cf8b
mov dword [esp + 0x10], 0x907865e1
mov dword [esp + 0x18], 0x1fe90568
push esi
call fcn.1000e440
mov byte [esp + 0x11c], 1
lea ecx, [esp + 0x9c]
mov dword [esp + 0x18], 0x3e629bad
push 1
call fcn.1000e440
mov dword [esp + 0xc], edi
jmp 0x10045fa1
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x54]
mov dword [eax + ecx*4], 0x34d0069
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x10045f8e
mov dword [esp + 0xc], edi
jmp 0x10045fbf
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x84]
mov dword [eax + ecx*4], edi
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x10045fad
mov dword [esp + 0xc], edi
jmp 0x10045fe1
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x9c]
mov dword [eax + ecx*4], 0x1448afe0
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 1
jl 0x10045fcb
mov esi, dword [esp + 0x54]
xor ecx, ecx
mov eax, 0xd4aa41a8
sub eax, dword [esi + 4]
mov edx, dword [esi + 8]
cmp eax, 0x7bd55fd0
setl cl
xor eax, eax
cmp ecx, edx
setge al
xor ecx, ecx
cmp edx, eax
setl cl
xor eax, eax
cmp ecx, edx
setg al
xor ecx, ecx
cmp eax, edx
setg cl
xor eax, eax
cmp edx, ecx
setge al
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov eax, dword [esi + 4]
mov dword [esp + 0x10], eax
cmp dword [esp + 0x10], edi
je 0x10046044
cmp dword [esp + 0x18], edi
je 0x10046044
xor ecx, ecx
inc ecx
jmp 0x10046046
mov ecx, edi
xor eax, eax
cmp ecx, 0xca0cec51
setne al
xor ecx, ecx
cmp eax, 0xf2b8
setge cl
sub ecx, dword [esi + 8]
neg ecx
sbb ecx, ecx
xor eax, eax
inc ecx
sub ecx, dword [esi + 4]
cmp ecx, dword [esi + 8]
setl al
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + 0x84]
mov dword [eax], ecx
mov eax, dword [esp + 0x54]
sub ecx, dword [eax]
mov dword [esp + 0x18], ecx
mov ecx, 0xfffe
mov eax, dword [esp + 0x18]
cmp ecx, eax
mov eax, dword [esp + 0x9c]
sbb ecx, ecx
neg ecx
push eax
mov dword [eax], ecx
call fcn.10051707
pop ecx
push dword [esp + 0x84]
mov dword [esp + 0xa0], edi
mov dword [esp + 0xa4], edi
mov dword [esp + 0xa8], edi
call fcn.10051707
or dword [esp + 0x120], 0xffffffff
pop ecx
push dword [esp + 0x54]
mov dword [esp + 0x88], edi
mov dword [esp + 0x8c], edi
mov dword [esp + 0x90], edi
call fcn.10051707
pop ecx
mov dword [esp + 0x54], edi
lea ecx, [esp + 0x60]
mov dword [esp + 0x58], edi
mov dword [esp + 0x5c], edi
mov dword [esp + 0x1c], 0x7f191253
push 2
call fcn.1000e440
mov dword [esp + 0x10], 0x7d8c
mov dword [esp + 0xc], 0xfffffff7
mov dword [esp + 0x28], 0xd5493e62
mov dword [esp + 0xc], edi
jmp 0x10046149
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x60]
mov dword [eax + ecx*4], 0x446df37d
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x10046136
mov edx, dword [esp + 0x60]
mov eax, dword [edx]
cmp eax, dword [edx + 4]
jl 0x10046172
mov eax, dword [esp + 0x10]
cmp eax, dword [esp + 0x10]
je 0x10046172
cmp dword [esp + 0x10], edi
jne 0x10046172
xor esi, esi
mov eax, edi
inc esi
jmp 0x10046177
xor esi, esi
inc esi
mov eax, esi
mov ecx, dword [esp + 0x10]
add ecx, eax
mov eax, dword [edx + 4]
dec eax
imul ecx, eax
mov eax, dword [esp + 0x60]
mov dword [eax], ecx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], 0
jmp 0x10046202
mov dword [esp + 0x18], 0xfffe
mov dword [esp + 0xc], 0xd
jmp 0x100461ce
mov byte [esp + 0x17], 0
cmp byte [esp + 0x17], 0
je 0x100461c6
push 0x235e
push 0x303
call dword [sym.imp.GDI32.dll_SetMapMode]
dec dword [esp + 0x18]
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 0x13
jle 0x100461aa
mov dword [esp + 0xc], 0
jmp 0x100461f7
mov byte [esp + 0x17], 0
cmp byte [esp + 0x17], 0
je 0x100461f3
push 0
call dword [sym.imp.ole32.dll_CoTaskMemFree]
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 0x1a
jl 0x100461df
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 0x1d
jg 0x10046198
push dword [esp + 0x60]
call fcn.10051707
xor edi, edi
mov dword [esp + 0x64], edi
mov dword [esp + 0x68], edi
mov dword [esp + 0x6c], edi
mov dword [esp + 0x20], 0xb5cf
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], 0x41fd9d08
mov dword [esp + 0x24], 5
mov dword [esp + 0x2c], esi
mov dword [esp + 0x2c], esi
mov dword [esp + 0x24], 0x1d89
cmp dword [esp + 0x24], 0x825
pop ecx
jge 0x10046397
call fcn.10051d83
push eax
push 0x100078d0
push 0x10007964
call fcn.10052087
add esp, 0xc
call fcn.10051d83
add eax, 0x20
push eax
push 0x1000796c
push 0x10007970
call fcn.10052087
and dword [esp + 0xd0], edi
add esp, 0xc
mov dword [esp + 0xc8], 0xf
mov byte [esp + 0xb4], 0
xor esi, esi
mov dword [esp + 0x11c], 2
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], esi
lea edx, [esp + 0xb4]
mov ecx, 0x1065b170
call fcn.10010043
mov ecx, dword [esp + 0xc8]
xor ebx, ebx
mov edx, dword [esp + 0xb4]
cmp ecx, 0x10
lea eax, [esp + 0xb4]
cmovae eax, edx
cmp byte [eax + ebx], 0x2e
je 0x10046352
cmp ecx, 0x10
lea eax, [esp + 0xb4]
cmovae eax, edx
movsx esi, byte [eax + ebx]
lea edx, [esi - 0x41]
and edx, 0x80000003
jns 0x10046312
dec edx
or edx, 0xfffffffc
inc edx
mov ecx, ebx
sub ecx, edx
push ecx
call fcn.100521a1
mov edi, eax
lea eax, [esi - 0x41]
mov esi, dword [esp + 0x20]
cdq
and edx, 3
pop ecx
add eax, edx
mov ecx, esi
sar eax, 2
sub ecx, eax
push ecx
call fcn.100521a1
add eax, dword [esp + 0x14]
mov edx, dword [esp + 0xb8]
add edi, eax
pop ecx
mov ecx, dword [esp + 0xc8]
mov dword [esp + 0x10], edi
inc ebx
cmp ebx, 4
jl 0x100462de
inc esi
mov dword [esp + 0x1c], esi
cmp esi, 4
jl 0x100462bd
push edi
mov ecx, 0x1065b2a8
call fcn.1002f3c4
push eax
call fcn.10032e2f
or dword [esp + 0x120], 0xffffffff
xor edi, edi
pop ecx
xor esi, esi
lea ecx, [esp + 0xb4]
push edi
inc esi
push esi
call fcn.1000ea25
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x28], edi
lea ecx, [esp + 0x90]
mov dword [esp + 0x28], 0xba2522ab
mov dword [esp + 0x28], 0xa260df39
push 2
call fcn.1000e440
mov dword [esp + 0x1c], 0x5dbf
mov dword [esp + 0x10], edi
jmp 0x100463dd
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x90]
mov dword [eax + ecx*4], 0xa5d840df
inc dword [esp + 0x10]
cmp dword [esp + 0x10], 2
jl 0x100463c7
cmp dword [esp + 0xc], edi
jne 0x100463ee
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
xor ecx, ecx
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0x18]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xc]
cmp eax, 0xfffffffb
setg cl
mov dword [esp + 0x20], ecx
dec dword [esp + 0x1c]
cmp dword [esp + 0x90], eax
je 0x10046445
push dword [esp + 0x90]
call fcn.10051707
pop ecx
mov dword [esp + 0x90], edi
mov dword [esp + 0x94], edi
mov dword [esp + 0x98], edi
push 2
lea ecx, [esp + 0x70]
call fcn.1000e440
push esi
lea ecx, [esp + 0x7c]
mov dword [esp + 0x120], 3
call fcn.1000e440
mov dword [esp + 0x1c], esi
xor edx, edx
mov dword [esp + 0x1c], 0xb6f2ba10
mov dword [esp + 0x20], esi
mov dword [esp + 0xc], edx
jmp 0x1004648d
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x44], 0x5baf43b7
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x1004647d
mov dword [esp + 0xc], edx
jmp 0x100464ad
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x6c]
mov dword [eax + ecx*4], 0xb653
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jl 0x1004649a
mov dword [esp + 0xc], edx
jmp 0x100464c9
mov ecx, dword [esp + 0xc]
mov eax, dword [esp + 0x78]
mov dword [eax + ecx*4], edx
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x100464ba
mov eax, dword [esp + 0x48]
mov dword [esp + 0x48], eax
test eax, eax
je 0x1004650a
mov byte [esp + 0x17], dl
cmp byte [esp + 0x17], dl
je 0x10046576
push edx
push edx
push edx
push edx
push edx
push edx
push edx
push 0x6c6
push 0xd6d
push 0x777
push edx
call dword [sym.imp.ADVAPI32.dll_ChangeServiceConfigW]
xor edx, edx
jmp 0x10046576
mov dword [esp + 0x18], 0xf0aa6e6f
mov dword [esp + 0x20], 0x912530a9
mov eax, dword [esp + 0x18]
cmp dword [esp + 0x18], 0x68108531
jl 0x1004652c
mov eax, dword [esp + 0x48]
mov eax, dword [esp + 0x48]
dec eax
neg eax
sbb eax, eax
neg eax
mov dword [esp + 0x20], eax
jne 0x10046545
mov ecx, edx
cmp dword [esp + 0x48], edx
je 0x10046547
mov ecx, esi
xor eax, eax
cmp ecx, 0xffffffff
setle al
xor ecx, ecx
cmp eax, 0x4039ee49
mov eax, dword [esp + 0x48]
setge cl
add eax, ecx
cmp dword [esp + 0x18], eax
jle 0x10046569
mov eax, dword [esp + 0x48]
mov eax, dword [esp + 0x48]
imul eax, dword [esp + 0x18]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x78]
xor ecx, ecx
cmp dword [eax], edx
setne cl
xor eax, eax
mov dword [esp + 0x4c], ecx
mov ecx, dword [esp + 0x6c]
cmp dword [ecx + 4], 0xab391500
sete al
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
cmp dword [ecx + 4], edx
je 0x100465aa
cmp dword [esp + 0x50], edx
je 0x100465aa
mov edx, esi
mov eax, dword [esp + 0x6c]
xor ecx, ecx
cmp edx, dword [eax]
mov eax, dword [esp + 0x78]
setne cl
sub ecx, dword [eax]
neg ecx
sbb ecx, ecx
xor eax, eax
inc ecx
cmp ecx, 0xfffffff9
setl al
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x78]
xor eax, eax
push edx
cmp dword [edx], esi
setle al
xor ecx, ecx
cmp eax, esi
setge cl
xor eax, eax
cmp ecx, dword [edx]
setl al
mov dword [esp + 0x24], eax
call fcn.10051707
or dword [esp + 0x120], 0xffffffff
xor edi, edi
pop ecx
push dword [esp + 0x6c]
mov dword [esp + 0x7c], edi
mov dword [esp + 0x80], edi
mov dword [esp + 0x84], edi
call fcn.10051707
xor edx, edx
pop ecx
push 3
mov dword [esp + 0x70], edx
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x10], edx
pop edi
jmp 0x10046644
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0xcc], 0xffffffff
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x10046631
mov dword [esp + 0xc], edx
jmp 0x10046663
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0xa8], 0xb43d2717
inc dword [esp + 0xc]
cmp dword [esp + 0xc], esi
jl 0x10046650
mov dword [esp + 0xc], edx
jmp 0x100466bd
mov dword [esp + 0x18], edi
lea ecx, [esp + 0x2f]
mov byte [esp + 0x2f], dl
call fcn.100455a5
xor edx, edx
mov byte [esp + 0x17], dl
cmp byte [esp + 0x17], dl
je 0x10046693
call fcn.1003c135
xor edx, edx
mov dword [esp + 0x18], 2
cmp dword [esp + 0x18], edx
jl 0x100466b9
mov byte [esp + 0x17], dl
cmp byte [esp + 0x17], 0
je 0x100466b3
call fcn.1003c143
xor edx, edx
dec dword [esp + 0x18]
jns 0x100466a1
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 2
jle 0x1004666f
cmp dword [esp + 0xc], edx
jne 0x100466f3
mov eax, dword [esp + 0xc]
xor ecx, ecx
cmp eax, edx
setge cl
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x1c]
neg eax
sbb eax, eax
inc eax
xor edx, edx
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xc]
mov ecx, esi
mov eax, dword [esp + 0xc]
mov eax, dword [esp + 0xd0]
sub ecx, eax
sub ecx, 0x20dd
neg ecx
sbb ecx, ecx
inc ecx
mov dword [esp + 0xc], ecx
mov dword [esp + 0xc], 0xffffffff
mov dword [esp + 0x10], 0xffffffff
mov dword [esp + 0x1c], 0xe005ab13
mov dword [esp + 0xac], 0x9999
mov dword [esp + 0x18], 2
mov dword [esp + 0x28], 0x9aed
mov dword [esp + 0xc], edx
jmp 0x1004675e
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x34], 0xfffb
inc dword [esp + 0xc]
cmp dword [esp + 0xc], 4
jl 0x1004674e
mov dword [esp + 0xc], edx
jmp 0x1004677e
mov eax, dword [esp + 0xc]
mov dword [esp + eax*4 + 0x104], 0xcd219fa4
inc dword [esp + 0xc]
cmp dword [esp + 0xc], edi
jl 0x1004676b
mov dword [esp + 0xc], edi
cmp dword [esp + 0xc], edx
jl 0x10046990
mov eax, 0xf464f612
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], 9
mov dword [esp + 0x24], 0x25cf162c
mov dword [esp + 0x24], 0xba684a08
mov dword [esp + 0x24], 0x4c996e15
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x24], 8
mov dword [esp + 0x24], 0xffffffff
mov dword [esp + 0x24], edx
mov dword [esp + 0x20], esi
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], eax
mov dword [esp + 0xec], eax
mov dword [esp + 0xf0], eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x30], edx
mov dword [esp + 0x10], edx
jmp 0x10046818
mov eax, dword [esp + 0x10]
mov dword [esp + eax*4 + 0xd8], 6
inc dword [esp + 0x10]
cmp dword [esp + 0x10], edi
jl 0x10046805
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x34]
mov eax, dword [esp + 0x3c]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x34]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x10]
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x34]
mov ecx, dword [esp + 0xc]
mov eax, esi
neg ecx
sub ecx, 0x8461
neg ecx
sbb ecx, ecx
inc ecx
sub eax, ecx
je 0x10046861
mov ecx, esi
cmp dword [esp + 0x38], edx
jne 0x10046863
mov ecx, edx
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x34]
mov edx, dword [esp + 0x34]
add edx, ecx
sub edx, eax
mov eax, dword [esp + 0x38]
neg edx
sbb edx, edx
xor ecx, ecx
inc edx
cmp edx, 0x2337
setge cl
imul eax, ecx
test eax, eax
jne 0x10046898
xor edi, edi
mov edx, edi
cmp dword [esp + 0x10], edi
je 0x1004689a
mov edx, esi
mov eax, dword [esp + 0xc]
xor ecx, ecx
mov eax, dword [esp + eax*4 + 0x34]
sub edx, eax
mov eax, dword [esp + 0xc]
mov eax, dword [esp + eax*4 + 0x34]
cmp edx, eax
setle cl
sub ecx, dword [esp + 0x3c]
neg ecx
sbb ecx, ecx
xor edx, edx
inc ecx
neg ecx
jne 0x100468ca
mov eax, edx
cmp dword [esp + 0x10], edx
je 0x100468cc
mov eax, esi
mov dword [esp + 0x20], eax
cmp dword [esp + 0xac], edx
jne 0x100468ef
mov eax, dword [esp + 0x1c]
mov ecx, edx
mov eax, dword [esp + 0x30]
imul eax, dword [esp + 0x24], 0xe651
test eax, eax
je 0x100468f1
mov ecx, esi
mov eax, dword [esp + 0x10c]
sub ecx, eax
mov dword [esp + 0x108], ecx
mov eax, dword [esp + 0x18]
dec dword [esp + 0x18]
cmp eax, ecx
mov eax, esi
cmovle eax, edx
mov dword [esp + 0x1c], eax
cmp dword [esp + 0x1c], edx
jne 0x10046925
mov ecx, edx
cmp dword [esp + 0xdc], edx
je 0x10046927
mov ecx, esi
mov eax, dword [esp + 0xc]
sub ecx, eax
mov dword [esp + 0xdc], ecx
cmp dword [esp + 0x18], edx
je 0x1004693e
mov eax, dword [esp + 0x30]
mov eax, dword [esp + 0x28]
cmp dword [esp + 0xe0], edx
jne 0x10046953
cmp dword [esp + 0x18], edx
jne 0x10046953
mov esi, edx
mov ecx, dword [esp + 0x20]
xor edx, edx
mov eax, dword [esp + 0x10]
cmp ecx, eax
push 0
setg dl
xor ecx, ecx
cmp esi, 0xffffffff
setne cl
xor eax, eax
cmp edx, ecx
pop edx
push 1
setl al
pop esi
mov dword [esp + 0xe8], eax
mov eax, 0xf464f612
dec dword [esp + 0xc]
push 3
pop edi
jns 0x10046797
mov eax, ebx
mov ecx, 0x3e8
cdq
idiv ecx
mov ecx, dword [esp + 0xb0]
mov esi, edx
mov edi, eax
call fcn.10045396
mov ecx, dword [esp + 0x114]
add eax, esi
add eax, edi
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret