Function at 0x454e33
Capabilities:
Create thread
Query environment variable
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x474
mov esi, dword [esp + 0x488]
mov edi, edx
mov ebx, ecx
lea ebp, [edx + 0x28]
push ebp
call dword [sym.imp.kernel32.dll_AcquireSRWLockExclusive]
cmp byte [edi + 0x78], 0
je 0x454e64
mov ecx, esi
call fcn.00452976
mov byte [ebx], 4
jmp 0x454ecc
mov ecx, dword [edi + 0x30]
mov eax, dword [edi + 0x3c]
mov dword [esp + 0x10], ebx
cmp eax, ecx
jne 0x454e80
lea ecx, [edi + 0x30]
call fcn.004540db
mov ecx, dword [edi + 0x30]
mov eax, dword [edi + 0x3c]
mov edx, dword [edi + 0x38]
xor ebx, ebx
add edx, eax
cmp edx, ecx
cmovae ebx, ecx
inc eax
sub edx, ebx
mov ebx, dword [edi + 0x34]
mov dword [ebx + edx*8], esi
mov byte [ebx + edx*8 + 4], 1
mov dword [edi + 0x3c], eax
lock inc dword [edi + 0xa0]
mov eax, dword [edi + 0x9c]
test eax, eax
je 0x454ede
lock dec dword [edi + 0x9c]
inc dword [edi + 0x60]
add edi, 0x90
push edi
call dword [sym.imp.kernel32.dll_WakeConditionVariable]
mov eax, dword [esp + 0x10]
mov byte [eax], 5
push ebp
call dword [sym.imp.kernel32.dll_ReleaseSRWLockExclusive]
add esp, 0x474
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, dword [edi + 0x98]
cmp eax, dword [edi + 0x94]
mov eax, dword [esp + 0x10]
je 0x454ec9
mov eax, dword [edi + 0x64]
test eax, eax
je 0x45551f
mov dword [esp + 0x64], eax
lock inc dword [eax]
jle 0x45551f
mov ecx, dword [edi + 0x24]
mov eax, dword [edi + 0x74]
mov esi, dword [esp + 0x48c]
lea ebx, [esp + 0x74]
mov edx, dword [ecx + 8]
mov dword [esp + 0x18], eax
mov eax, dword [edi + 0x20]
dec edx
and edx, 0xfffffff8
lea eax, [eax + edx + 8]
push eax
push ebx
call dword [ecx + 0x14]
add esp, 8
mov eax, dword [ebx + 4]
mov ecx, dword [ebx]
mov ebx, dword [ebx + 8]
cmp dword [edi + 8], 0
mov dword [esp + 0x1c], ebp
mov dword [esp + 8], eax
je 0x454f64
mov eax, dword [esi]
mov edx, dword [edi + 0xc]
mov dword [esp + 0x14], eax
lock inc dword [eax]
mov ebp, dword [esp + 8]
jg 0x455167
jmp 0x45551f
mov eax, dword [esi]
mov dword [esp + 0x14], eax
lock inc dword [eax]
mov ebp, dword [esp + 8]
jle 0x45551f
mov edx, dword [0x48f948]
test edx, edx
je 0x454f87
dec edx
jmp 0x455167
lea esi, [esp + 0x74]
mov dword [esp + 0x50], ecx
mov dword [esp + 0x4c], ebx
mov edx, str.RUST_MIN_STACK
mov ecx, esi
push 0xe
call fcn.004508e6
pop eax
mov eax, dword [esi]
cmp eax, 0x80000000
jne 0x454fb9
lea ecx, [esp + 0x74]
call fcn.004509c2
jmp 0x455152
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x78]
mov esi, 0x200
mov dword [esp], 0
mov dword [esp + 0x38], eax
lea eax, [esp + 0x2c]
and dword [eax], 0
mov dword [eax + 4], 2
and dword [eax + 8], 0
push 2
pop eax
mov dword [esp + 0xc], eax
cmp esi, 0x201
jae 0x455002
lea ebx, [esp + 0x74]
mov dword [esp + 4], 0x200
mov ebp, esi
jmp 0x455027
sub esi, dword [esp]
lea ecx, [esp + 0x2c]
mov edx, esi
call fcn.0044eece
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov dword [esp + 0x34], ebp
mov dword [esp + 0xc], ebx
mov dword [esp + 4], ebp
mov dword [esp], ebp
push 0
call dword [sym.imp.kernel32.dll_SetLastError]
push ebp
push ebx
push dword [esp + 0x40]
call dword [sym.imp.kernel32.dll_GetEnvironmentVariableW]
mov esi, eax
test eax, eax
jne 0x45504b
call dword [sym.imp.kernel32.dll_GetLastError]
test eax, eax
jne 0x4550b9
cmp esi, ebp
jne 0x455071
call dword [sym.imp.kernel32.dll_GetLastError]
cmp eax, 0x7a
jne 0x45551f
lea esi, [ebp + ebp]
test ebp, ebp
mov eax, 0xffffffff
cmovs esi, eax
jmp 0x454fea
ja 0x454fea
cmp esi, dword [esp + 4]
ja 0x45551f
lea ebp, [esp + 0x54]
mov edx, ebx
mov ecx, ebp
push esi
call fcn.0044ec60
pop eax
mov ecx, dword [esp]
mov edx, dword [esp + 0xc]
call fcn.0044ef59
mov esi, dword [ebp]
mov ebp, dword [esp + 8]
cmp esi, 0x80000000
je 0x4550db
mov eax, dword [esp + 0x58]
mov ebx, dword [esp + 0x5c]
mov dword [esp + 4], eax
jmp 0x4550ed
lea esi, [esp + 0x58]
mov ecx, esi
call fcn.004257f0
mov ecx, dword [esp]
mov edx, dword [esp + 0xc]
mov dword [esi - 4], 0x80000000
call fcn.0044ef59
mov ebp, dword [esp + 8]
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x5c]
call fcn.00425168
mov esi, 0x80000000
mov ecx, dword [esp + 0x48]
mov edx, dword [esp + 0x38]
call fcn.0044ef59
cmp esi, 0x80000000
je 0x455152
mov edx, dword [esp + 4]
lea ebp, [esp + 0x74]
mov ecx, ebp
push ebx
call fcn.0041bd04
pop eax
cmp dword [ebp], 0
je 0x45511d
mov bl, 1
jmp 0x45513c
lea ebp, [esp + 0x74]
mov edx, dword [ebp + 4]
mov ecx, ebp
push dword [ebp + 8]
call fcn.0041df6b
pop eax
cmp byte [ebp], 0
mov eax, dword [ebp + 4]
setne bl
mov dword [esp], eax
mov edx, dword [esp + 4]
mov ecx, esi
call fcn.0041ae6b
mov ebp, dword [esp + 8]
mov edx, dword [esp]
test bl, bl
je 0x455157
mov edx, 0x200000
lea eax, [edx + 1]
mov dword [0x48f948], eax
mov ecx, dword [esp + 0x50]
mov ebx, dword [esp + 0x4c]
cmp ecx, 0x80000000
mov dword [esp], edx
jne 0x455179
call fcn.0044fc40
jmp 0x4551d6
mov esi, ecx
cmp ebx, 7
ja 0x455195
xor eax, eax
xor ecx, ecx
xor edx, edx
inc ecx
cmp ebx, edx
je 0x4551a4
cmp byte [ebp + edx], 0
je 0x4551a2
inc edx
jmp 0x455187
xor ecx, ecx
mov edx, ebp
push ebx
call fcn.0041bb70
pop ecx
jmp 0x4551a4
mov eax, ecx
mov ecx, esi
test eax, eax
jne 0x45551f
lea esi, [esp + 0x74]
mov dword [esi], ecx
mov ecx, esi
mov dword [esi + 4], ebp
mov dword [esi + 8], ebx
call fcn.0041b022
lea ecx, [esp + 0x74]
mov dword [esi + 4], eax
mov dword [esi + 8], edx
mov dword [esi], 1
call fcn.0044fcd1
mov dword [esp + 0x2c], eax
mov dword [esp + 0x38], eax
lock inc dword [eax]
jle 0x45551f
push 0x18
pop ecx
push 4
pop edx
call fcn.00451ece
mov ebp, eax
xor eax, eax
inc eax
mov dword [ebp], eax
mov dword [ebp + 4], eax
and dword [ebp + 8], 0
and dword [ebp + 0xc], 0
mov dword [esp + 0x54], ebp
lock inc dword [ebp]
jle 0x45551f
xor ecx, ecx
call fcn.00450869
mov ebx, eax
test eax, eax
je 0x45522d
lock inc dword [ebx]
jle 0x45551f
mov ecx, ebx
jmp 0x45522f
xor ecx, ecx
call fcn.00450869
lea ecx, [esp + 0x74]
mov dword [ecx], eax
call fcn.004508b4
mov ecx, dword [ebp + 8]
test ecx, ecx
je 0x455250
lock inc dword [ecx + 0xc]
jle 0x455521
push 0x18
pop ecx
push 4
pop edx
call fcn.00451ece
mov esi, eax
mov eax, dword [esp + 0x38]
mov dword [esi], eax
mov eax, dword [esp + 0x14]
mov dword [esi + 4], ebp
mov dword [esi + 8], ebx
mov dword [esi + 0xc], eax
mov eax, dword [esp + 0x64]
mov dword [esi + 0x10], eax
mov eax, dword [esp + 0x18]
mov dword [esi + 0x14], eax
push 8
pop ecx
call fcn.00450858
mov ebx, eax
mov dword [eax], esi
mov dword [eax + 4], 0x48468c
push 0
push 0x10000
push eax
push 0x4508c5
push dword [esp + 0x10]
push 0
call dword [sym.imp.kernel32.dll_CreateThread]
mov esi, eax
test eax, eax
jne 0x4552f6
mov edx, dword [ebx + 4]
mov eax, dword [edx]
test eax, eax
je 0x4552c1
push dword [ebx]
call eax
pop eax
mov edx, dword [ebx + 4]
mov ecx, dword [ebx]
call fcn.00450323
mov ecx, ebx
call fcn.00450335
lea esi, [esp + 0x74]
mov ecx, esi
call fcn.004257f0
cmp byte [esi], 4
jne 0x4552e5
mov esi, dword [esp + 0x78]
jmp 0x4552f6
mov ebx, dword [esp + 0x74]
mov esi, dword [esp + 0x78]
cmp bl, 4
jne 0x45548d
mov eax, dword [esp + 0x38]
mov ebx, ebp
mov ebp, dword [esp + 0x1c]
test eax, eax
mov dword [esp + 0x24], ebx
mov dword [esp + 0x28], esi
mov dword [esp + 0x20], eax
je 0x455454
lock inc dword [edi + 0x98]
inc dword [edi + 0x74]
mov ecx, dword [edi + 0x50]
mov edx, dword [edi + 0x54]
push dword [esp + 0x18]
push dword [edi + 0x5c]
push dword [edi + 0x58]
call fcn.00452a9d
add esp, 0xc
cmp dword [edi + 0x48], 0
je 0x4554a6
mov ebx, dword [edi + 0x44]
mov ecx, dword [edi + 0x40]
xor edx, edx
mov dword [esp + 8], 0
mov ebp, ebx
lea esi, [ecx - 0x10]
mov dword [esp + 4], ecx
and ebp, eax
shr eax, 0x19
movd xmm0, eax
mov dword [esp + 0x14], eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm0, xmm0, 0
movdqu xmmword [esp + 0x64], xmm0
movdqu xmm1, xmmword [ecx + ebp]
mov dword [esp], edx
pcmpeqb xmm0, xmm1
movdqu xmmword [esp + 0x38], xmm1
pmovmskb eax, xmm0
mov word [esp + 0x74], ax
lea ecx, [esp + 0x74]
call fcn.00410aac
test eax, eax
je 0x4553b9
add edx, ebp
mov ecx, esi
and edx, ebx
mov eax, edx
shl eax, 4
sub ecx, eax
mov eax, dword [esp + 0x18]
cmp dword [ecx], eax
jne 0x455395
jmp 0x455411
cmp dword [esp + 8], 0
mov eax, 1
jne 0x4553d8
movdqu xmm0, xmmword [esp + 0x38]
mov ecx, ebx
mov edx, ebp
call fcn.00454ba4
mov dword [esp + 0xc], edx
movdqu xmm1, xmmword [esp + 0x38]
pcmpeqd xmm0, xmm0
mov edx, dword [esp]
pcmpeqb xmm1, xmm0
pmovmskb ecx, xmm1
test ecx, ecx
jne 0x4554ba
mov ecx, dword [esp + 4]
movdqu xmm0, xmmword [esp + 0x64]
lea ebp, [edx + ebp + 0x10]
mov dword [esp + 8], eax
add edx, 0x10
and ebp, ebx
jmp 0x45537a
mov ecx, dword [esp + 4]
neg edx
movq xmm1, qword [esp + 0x20]
shl edx, 4
mov eax, dword [ecx + edx - 4]
mov dword [esp + 0x7c], eax
movsd xmm0, qword [ecx + edx - 0xc]
movsd qword [esp + 0x74], xmm0
movq qword [ecx + edx - 0xc], xmm1
mov eax, dword [esp + 0x28]
mov dword [ecx + edx - 4], eax
mov ebp, dword [esp + 0x1c]
lea ecx, [esp + 0x74]
call fcn.00452199
jmp 0x454ec5
lea ecx, [esp + 0x24]
call fcn.0045253c
cmp al, 0xd
jne 0x45547a
mov eax, dword [edi + 0x98]
test eax, eax
je 0x45547a
movzx ecx, bl
mov edx, esi
call fcn.00425168
jmp 0x454ec5
movq xmm0, qword [esp + 0x24]
mov eax, dword [esp + 0x10]
movq qword [eax], xmm0
jmp 0x454ecc
lea ecx, [esp + 0x54]
call fcn.00452287
lea ecx, [esp + 0x2c]
call fcn.004039f6
xor eax, eax
jmp 0x4552fc
lea ecx, [edi + 0x40]
lea edx, [edi + 0x50]
mov esi, eax
call fcn.0047b1d5
mov eax, esi
jmp 0x455340
mov edx, dword [esp + 4]
mov esi, dword [esp + 0xc]
mov al, byte [edx + esi]
test al, al
js 0x4554d7
movdqa xmm0, xmmword [edx]
pmovmskb eax, xmm0
bsf esi, eax
mov al, byte [edx + esi]
and al, 1
mov ecx, dword [esp + 0x14]
movzx eax, al
sub dword [edi + 0x48], eax
lea eax, [esi - 0x10]
and eax, ebx
mov byte [edx + esi], cl
mov byte [edx + eax + 0x10], cl
mov ecx, dword [esp + 0x18]
shl esi, 4
mov eax, edx
inc dword [edi + 0x4c]
sub eax, esi
neg esi
mov dword [eax - 0x10], ecx
movsd xmm0, qword [esp + 0x20]
movsd qword [edx + esi - 0xc], xmm0
mov ecx, dword [esp + 0x28]
mov dword [eax - 4], ecx
and dword [esp + 0x74], 0
jmp 0x455442
ud2
add ecx, 8
xor edx, edx
call fcn.0045019a
ud2