Function at 0x401a80
Capabilities:
Resume thread

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5243fd
mov eax, dword fs:[0]
push eax
sub esp, 0x248
mov eax, dword [0x570454]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
call fcn.00414332
cmp byte [esi + 0x5a0], 0
je 0x401b57
call fcn.00415761
xor ecx, ecx
xor ebx, ebx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x401ade
push 0x80004005
call fcn.00401330
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x240], eax
lea ecx, [ebp - 0x240]
push ecx
lea ecx, [esi + 0x52c]
mov dword [ebp - 4], ebx
call fcn.004114a8
push 0x550c88
push str.ExamShield_Program
lea ecx, [ebp - 0x240]
call fcn.00403780
mov edx, dword [ebp - 0x240]
push edx
lea ecx, [esi + 0x52c]
call fcn.004134b7
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x240]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401b59
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x401b59
xor ebx, ebx
mov ecx, dword [esi + 0x420]
mov edi, dword [ecx - 0x10]
cmp dword [ecx - 0xc], ebx
lea eax, [ecx - 0x10]
je 0x401bb9
cmp dword [eax + 0xc], ebx
lea edx, [eax + 0xc]
jge 0x401b91
cmp dword [ecx - 8], ebx
jge 0x401b81
push 0x80070057
call fcn.00401330
mov dword [ecx - 0xc], ebx
mov ecx, dword [esi + 0x420]
xor edx, edx
mov word [ecx], dx
jmp 0x401bb9
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x401ba7
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [edi]
mov eax, dword [edx + 0xc]
mov ecx, edi
call eax
add eax, 0x10
mov dword [esi + 0x420], eax
mov eax, dword [esi + 0xa4]
push ebx
lea ecx, [ebp - 0x23c]
push ecx
or edi, 0xffffffff
push eax
mov dword [esi + 0x438], edi
mov dword [esi + 0x430], ebx
mov dword [esi + 0x434], ebx
mov dword [ebp - 0x23c], ebx
mov dword [ebp - 0x238], ebx
mov dword [ebp - 0x234], ebx
mov dword [ebp - 0x230], ebx
mov dword [ebp - 0x22c], ebx
mov dword [ebp - 0x228], ebx
call fcn.00418b7d
cmp eax, ebx
je 0x401cd1
mov edx, dword [esi + 0xe8]
or edx, dword [esi + 0xec]
jne 0x401cd1
cmp dword [esi + 0xd0], ebx
je 0x401cd1
call fcn.00415761
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x401c46
push 0x80004005
call fcn.00401330
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x240], eax
mov dword [ebp - 4], 1
mov eax, dword [esi + 0xa4]
push eax
push 0x82
lea ecx, [ebp - 0x240]
push ecx
call fcn.004191c8
mov edx, dword [ebp - 0x240]
push ebx
push 4
push edx
call fcn.00414bad
cmp eax, 6
je 0x401caf
push 2
mov ecx, esi
call fcn.00413f8d
mov dword [ebp - 4], edi
mov eax, dword [ebp - 0x240]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jmp 0x401fc6
mov dword [ebp - 4], edi
mov eax, dword [ebp - 0x240]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jg 0x401cd1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.00415761
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x401ceb
push 0x80004005
call fcn.00401330
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x244], eax
mov dword [ebp - 4], 2
call fcn.00415761
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x401d1e
push 0x80004005
call fcn.00401330
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x248], eax
lea ecx, [ebp - 0x250]
push ecx
lea edx, [ebp - 0x244]
push edx
lea ecx, [ebp - 0x248]
push ecx
mov byte [ebp - 4], 3
mov eax, dword [esi + 0xa0]
lea edi, [esi + 0xa0]
lea ebx, [esi + 0x104]
push ebx
push eax
call fcn.00419513
test eax, eax
jne 0x401ddd
push edi
lea edx, [ebp - 0x240]
push str.http:__
push edx
call fcn.00404060
add esp, 0xc
push eax
mov ecx, edi
mov byte [ebp - 4], 4
call fcn.00404260
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x240]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401dad
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [edi]
lea ecx, [ebp - 0x250]
push ecx
lea edx, [ebp - 0x244]
push edx
lea eax, [ebp - 0x248]
push eax
push ebx
push edi
call fcn.00419513
test eax, eax
jne 0x401ddd
push 2
mov ecx, esi
call fcn.00413f8d
jmp 0x401f83
mov ecx, dword [ebp - 0x244]
push 0x2f
push ecx
call fcn.00500dba
mov edx, dword [ebp - 0x244]
add esp, 8
test eax, eax
je 0x401e03
sub eax, edx
sar eax, 1
mov ecx, eax
cmp ecx, 0xffffffff
jne 0x401e23
push 0x5c
push edx
call fcn.00500dba
add esp, 8
test eax, eax
je 0x401e7c
mov edx, dword [ebp - 0x244]
sub eax, edx
sar eax, 1
mov ecx, eax
cmp ecx, 0xffffffff
je 0x401e7c
cmp dword [edx - 0xc], 1
jle 0x401e7c
mov eax, dword [edx - 0xc]
sub eax, ecx
dec eax
push eax
lea edx, [ebp - 0x254]
push edx
lea ecx, [ebp - 0x244]
call fcn.00403ad0
lea edi, [esi + 0x41c]
push eax
mov ecx, edi
mov byte [ebp - 4], 5
call fcn.00404260
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x254]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401e90
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x401e90
lea ecx, [ebp - 0x244]
lea edi, [esi + 0x41c]
push ecx
mov ecx, edi
call fcn.00404260
mov edx, dword [esi + 0x418]
cmp dword [edx - 0xc], 0
lea eax, [esi + 0x418]
jle 0x401eaa
push eax
mov ecx, edi
call fcn.00404260
call fcn.00415761
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x401ec4
push 0x80004005
call fcn.00401330
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x24c], eax
mov byte [ebp - 4], 6
mov ecx, dword [ebp - 0x248]
mov edi, dword [edi]
push ecx
push edi
push 0x66
lea edx, [ebp - 0x24c]
push edx
call fcn.004191e2
mov eax, dword [ebp - 0x24c]
push eax
lea ecx, [esi + 0x330]
call fcn.004134b7
push 0
push 4
push 0
push 0
push esi
push 0x402000
call fcn.0041a073
mov dword [esi + 0x428], eax
test eax, eax
jne 0x401f46
push 2
mov ecx, esi
call fcn.00413f8d
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x24c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x401f77
mov dword [eax + 0x28], 0
mov esi, dword [esi + 0x428]
mov ecx, dword [esi + 0x2c]
push ecx
call dword [sym.imp.KERNEL32.dll_ResumeThread]
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x24c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x401f83
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x248]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401fa9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], 0xffffffff
mov eax, dword [ebp - 0x244]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x401fd2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.00500836
mov esp, ebp
pop ebp
ret