Function at 0x405d40
Capabilities:
Get common file path
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x5a3f5b
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x2ac
call fcn.00596bf0
mov eax, dword [0x616930]
xor eax, esp
mov dword [esp + 0x2a8], eax
push ebx
push esi
push edi
mov eax, dword [0x616930]
xor eax, esp
push eax
lea eax, [esp + 0x2c0]
mov dword fs:[0], eax
mov esi, dword [ebp + 0xc]
push 0x3e8
mov dword [esp + 0x18], esi
call dword [sym.imp.KERNEL32.dll_Sleep]
xor ebx, ebx
mov dword [esp + 0x140], 0xf
mov dword [esp + 0x13c], ebx
mov byte [esp + 0x12c], bl
mov dword [esp + 0x2c8], ebx
mov dword [esp + 0x38], ebx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x40], ebx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x48], ebx
mov dword [esp + 0x4c], ebx
mov dword [esp + 0x50], ebx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x58], ebx
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], ebx
mov byte [esp + 0x2c8], 1
mov edi, dword [esi]
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x405df4
sub eax, edx
add eax, 3
push eax
call fcn.0057c0af
add esp, 4
mov dword [esp + 0x60], eax
mov ecx, edi
mov edx, eax
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
cmp al, bl
jne 0x405e11
mov eax, dword [esi]
mov edi, dword [sym.imp.SHLWAPI.dll_StrStrIA]
push str.AgentCleanupToolSupport.exe
push eax
call edi
test eax, eax
je 0x405e35
mov dword [esi], str.AgentCleanupToolSupport.exe
mov ecx, dword [esi]
push str.AgentCleanupToolClient.exe
push ecx
call edi
test eax, eax
je 0x405e49
mov dword [esi], str.AgentCleanupToolClient.exe
lea edx, [esp + 0x34]
mov eax, 1
push edx
push str.cleamuplog
mov ecx, str.SoftwareAdventNetDesktopCentralDCAgent
mov dword [0x61d05c], eax
mov dword [esp + 0x3c], eax
call fcn.00407040
cmp dword [esp + 0x34], ebx
jne 0x405e77
mov dword [0x61d05c], ebx
push 0x105
push 1
call fcn.0057b222
add esp, 8
mov edi, eax
push edi
push 0x104
mov dword [esp + 0x6c], edi
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
cmp edi, ebx
jne 0x405ea0
xor eax, eax
jmp 0x405eae
mov eax, edi
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x405ea5
sub eax, edx
push edi
mov edi, eax
mov ecx, 0x61fd24
call fcn.00401cc0
push 0x5ad978
push 0x61fd24
mov ecx, 0x13
call fcn.00401de0
lea eax, [esp + 0x148]
push eax
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
movzx ecx, word [esp + 0x154]
movzx edx, word [esp + 0x152]
movzx eax, word [esp + 0x150]
push ecx
movzx ecx, word [esp + 0x152]
push edx
movzx edx, word [esp + 0x152]
push eax
movzx eax, word [esp + 0x154]
push ecx
push edx
push eax
push str._nLog_Open_Time__d__d__d__d:_d:_d_n
call fcn.00402b00
add esp, 0x1c
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
lea ecx, [esp + 0x20]
push ecx
push eax
xor edi, edi
call fcn.00408db0
mov eax, dword [esp + 0x20]
cmp eax, ebx
je 0x405f6f
lea edx, [esp + 0x30]
push edx
push 4
lea ecx, [esp + 0x20]
push ecx
push 0x14
push eax
mov dword [esp + 0x44], 4
call dword [sym.imp.ADVAPI32.dll_GetTokenInformation]
test eax, eax
je 0x405f60
mov edi, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp edi, ebx
jne 0x405fe3
push str.Exe_is_not_being_executed_as_administrator_n
call fcn.00402b00
mov eax, dword [esi]
add esp, 4
mov edi, str.AgentCleanupToolSupport.exe
mov cl, byte [eax]
cmp cl, byte [edi]
jne 0x405fa3
cmp cl, bl
je 0x405f9f
mov cl, byte [eax + 1]
cmp cl, byte [edi + 1]
jne 0x405fa3
add eax, 2
add edi, 2
cmp cl, bl
jne 0x405f83
xor eax, eax
jmp 0x405fa8
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x405fbf
push 0x10
push str.ERROR_
push str.Please_execute_the_exe_in_as_administrator
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
lea ecx, [esp + 0x38]
call fcn.00402a80
cmp dword [esp + 0x140], 0x10
jb 0x406b9d
mov eax, dword [esp + 0x12c]
push eax
jmp 0x406b95
mov esi, dword [esp + 0x60]
mov eax, 0x1c
call fcn.00596bf0
mov edi, esp
mov eax, esi
mov dword [edi + 0x14], 0xf
mov dword [edi + 0x10], ebx
mov dword [esp + 0x34], esp
mov byte [edi], bl
lea ecx, [eax + 1]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x406008
sub eax, ecx
push eax
push esi
mov ecx, edi
call fcn.0040b380
lea ecx, [esp + 0x38]
push ecx
call fcn.00404e60
mov eax, 0xf
mov dword [esp + 0x108], eax
mov dword [esp + 0x104], ebx
mov byte [esp + 0xf4], bl
mov dword [esp + 0xec], eax
mov dword [esp + 0xe8], ebx
mov byte [esp + 0xd8], bl
mov dword [esp + 0x124], eax
mov dword [esp + 0x120], ebx
mov byte [esp + 0x110], bl
mov dword [esp + 0x7c], eax
mov dword [esp + 0x78], ebx
mov byte [esp + 0x68], bl
mov dword [esp + 0x98], eax
mov dword [esp + 0x94], ebx
mov byte [esp + 0x84], bl
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb0], ebx
mov byte [esp + 0xa0], bl
mov byte [esp + 0x2c8], 8
mov esi, dword [esp + 0x1c]
mov dword [esp + 0xd0], eax
mov eax, esi
mov dword [esp + 0xcc], ebx
mov byte [esp + 0xbc], bl
lea edi, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4060c4
sub eax, edi
push eax
push esi
lea ecx, [esp + 0xc4]
call fcn.0040b380
mov byte [esp + 0x2c8], 9
mov eax, dword [esp + 0xbc]
xor esi, esi
cmp dword [esp + 0xd0], 0x10
jae 0x4060fd
lea eax, [esp + 0xbc]
push 0x5ad300
push eax
call fcn.0057b27f
mov edi, eax
add esp, 8
cmp edi, ebx
je 0x4061b0
push 0x5ad275
push edi
call fcn.0057b679
add esp, 8
test eax, eax
je 0x4061b0
cmp esi, 3
jge 0x4061b0
cmp esi, ebx
jne 0x406150
mov eax, edi
lea edx, [eax + 1]
lea ecx, [ecx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x406140
lea ecx, [esp + 0xf4]
jmp 0x40618e
cmp esi, 1
jne 0x406170
mov eax, edi
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x406160
lea ecx, [esp + 0xd8]
jmp 0x40618e
cmp esi, 2
jne 0x406197
mov eax, edi
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x406180
lea ecx, [esp + 0x110]
sub eax, edx
push eax
push edi
call fcn.0040b380
push 0x5ad300
push ebx
call fcn.0057b27f
mov edi, eax
add esp, 8
inc esi
cmp edi, ebx
jne 0x406115
mov eax, 0x1c
call fcn.00596bf0
mov ecx, esp
mov dword [esp + 0x34], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0xfc]
mov edi, 0xf
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push edx
mov byte [ecx], bl
call fcn.0040a850
lea ecx, [esp + 0x174]
call fcn.004032f0
push eax
lea ecx, [esp + 0x88]
mov byte [esp + 0x2cc], 0xa
call fcn.0040a630
mov esi, 0x10
mov byte [esp + 0x2c8], 9
cmp dword [esp + 0x16c], esi
jb 0x406224
mov eax, dword [esp + 0x158]
push eax
call fcn.0057af7f
add esp, 4
mov eax, 0x1c
call fcn.00596bf0
mov ecx, esp
mov dword [esp + 0x34], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0xa8]
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push edx
mov byte [ecx], bl
call fcn.0040a850
mov eax, 0x1c
mov byte [esp + 0x2e4], 0xb
call fcn.00596bf0
mov ecx, esp
mov dword [esp + 0x68], esp
push 0xffffffffffffffff
push ebx
lea eax, [esp + 0x134]
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push eax
mov byte [ecx], bl
call fcn.0040a850
lea ecx, [esp + 0x190]
mov byte [esp + 0x300], 9
call fcn.004035a0
push eax
lea ecx, [esp + 0x6c]
mov byte [esp + 0x2cc], 0xc
call fcn.0040a630
mov byte [esp + 0x2c8], 9
cmp dword [esp + 0x16c], esi
jb 0x4062c3
mov ecx, dword [esp + 0x158]
push ecx
call fcn.0057af7f
add esp, 4
mov eax, 0x1c
call fcn.00596bf0
mov ecx, esp
mov dword [esp + 0x34], esp
push 0xffffffffffffffff
push ebx
lea edx, [esp + 0x134]
mov dword [ecx + 0x14], edi
mov dword [ecx + 0x10], ebx
push edx
mov byte [ecx], bl
call fcn.0040a850
lea ecx, [esp + 0x174]
call fcn.004032f0
push eax
lea ecx, [esp + 0xa4]
mov byte [esp + 0x2cc], 0xd
call fcn.0040a630
mov byte [esp + 0x2c8], 9
cmp dword [esp + 0x16c], esi
jb 0x40632d
mov eax, dword [esp + 0x158]
push eax
call fcn.0057af7f
add esp, 4
mov ecx, dword [esp + 0x84]
cmp dword [esp + 0x98], esi
jae 0x406344
lea ecx, [esp + 0x84]
lea edx, [esp + 0x2c]
push edx
call fcn.00408e10
mov byte [esp + 0x2c8], 0xe
mov ecx, dword [esp + 0x68]
cmp dword [esp + 0x7c], esi
jae 0x406364
lea ecx, [esp + 0x68]
lea eax, [esp + 0x24]
push eax
call fcn.00408e10
mov byte [esp + 0x2c8], 0xf
mov ecx, dword [esp + 0xa0]
cmp dword [esp + 0xb4], esi
jae 0x40638d
lea ecx, [esp + 0xa0]
lea edx, [esp + 0x28]
push edx
call fcn.00408e10
push edi
push str.SecEncTempValue
lea eax, [esp + 0x70]
push eax
mov byte [esp + 0x2d4], 0x10
call fcn.0040aa90
cmp eax, 0xffffffff
je 0x406499
mov esi, dword [esp + 0x14]
mov ecx, dword [esi]
push str.AgentCleanuptoolClient
push ecx
call fcn.0057b679
add esp, 8
test eax, eax
je 0x406579
mov edx, dword [esi]
push str.AgentCleanuptoolClient.exe
push edx
call fcn.0057b679
add esp, 8
test eax, eax
je 0x406579
push str.Error:_Renamed_AgentCleanuptoolClient_n
call fcn.0057b33c
add esp, 4
push str.Error:_Renamed_AgentCleanuptoolClient_n
call fcn.00402b00
add esp, 4
lea eax, [esp + 0x28]
push eax
call fcn.00401ba0
lea ecx, [esp + 0x24]
push ecx
call fcn.00401ba0
lea edx, [esp + 0x2c]
push edx
call fcn.00401ba0
lea ecx, [esp + 0xbc]
call fcn.00409020
lea ecx, [esp + 0xa0]
call fcn.00409020
lea ecx, [esp + 0x84]
call fcn.00409020
lea ecx, [esp + 0x68]
call fcn.00409020
lea ecx, [esp + 0x110]
call fcn.00409020
lea ecx, [esp + 0xd8]
call fcn.00409020
lea ecx, [esp + 0xf4]
call fcn.00409020
lea eax, [esp + 0x1c]
push eax
call fcn.00401ba0
lea ecx, [esp + 0x38]
call fcn.00402a80
lea ecx, [esp + 0x12c]
call fcn.00409020
jmp 0x406b9d
push edi
push str.SecEncTempValue
lea ecx, [esp + 0x70]
push ecx
call fcn.0040aa90
mov esi, dword [esp + 0x14]
cmp eax, 0xffffffff
jne 0x406579
mov edx, dword [esi]
push str.AgentCleanupToolSupport.exe
push edx
call fcn.0057b679
add esp, 8
test eax, eax
je 0x406579
mov eax, dword [esi]
push str.AgentCleanupToolSupport
push eax
call fcn.0057b679
add esp, 8
test eax, eax
je 0x406579
push str.Error:_Renamed_AgentCleanupToolSupport_n
call fcn.0057b33c
add esp, 4
push str.Error:_Renamed_AgentCleanupToolSupport_n
call fcn.00402b00
add esp, 4
lea ecx, [esp + 0x28]
push ecx
call fcn.00401ba0
lea edx, [esp + 0x24]
push edx
call fcn.00401ba0
lea eax, [esp + 0x2c]
push eax
call fcn.00401ba0
lea ecx, [esp + 0xbc]
call fcn.00409020
lea ecx, [esp + 0xa0]
call fcn.00409020
lea ecx, [esp + 0x84]
call fcn.00409020
lea ecx, [esp + 0x68]
call fcn.00409020
lea ecx, [esp + 0x110]
call fcn.00409020
lea ecx, [esp + 0xd8]
call fcn.00409020
lea ecx, [esp + 0xf4]
call fcn.00409020
lea ecx, [esp + 0x1c]
push ecx
jmp 0x40647a
mov eax, dword [esi]
mov edi, str.AgentCleanupToolSupport.exe
mov cl, byte [eax]
cmp cl, byte [edi]
jne 0x4065a0
cmp cl, bl
je 0x40659c
mov cl, byte [eax + 1]
cmp cl, byte [edi + 1]
jne 0x4065a0
add eax, 2
add edi, 2
cmp cl, bl
jne 0x406580
xor eax, eax
jmp 0x4065a5
sbb eax, eax
sbb eax, 0xffffffff
cmp eax, ebx
jne 0x4067af
mov edx, dword [0x616414]
mov eax, dword [edx + 0xc]
mov ecx, 0x616414
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
lea eax, [esp + 0x20]
mov byte [esp + 0x2c8], 0x11
mov word [esp + 0x20], 0x22
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x4065e0
lea ecx, [esp + 0x20]
sub eax, edx
push ecx
mov edi, eax
lea ecx, [esp + 0x18]
call fcn.00401cc0
push str.ServerHashTime
lea edx, [esp + 0x18]
push edx
mov ecx, 0xe
call fcn.00401de0
lea edi, [esp + 0x14]
call fcn.00408eb0
lea eax, [esp + 0x174]
push eax
push str..DCAgent.reg
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
je 0x4066e2
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
lea edx, [esp + 0x158]
push edx
call fcn.00405890
add esp, 4
push eax
lea ecx, [esp + 0x130]
mov byte [esp + 0x2cc], 0x12
call fcn.0040a630
mov esi, 0x10
mov byte [esp + 0x2c8], 0x11
cmp dword [esp + 0x16c], esi
jb 0x406684
mov eax, dword [esp + 0x158]
push eax
call fcn.0057af7f
add esp, 4
mov edi, dword [esp + 0x12c]
cmp dword [esp + 0x140], esi
jae 0x40669b
lea edi, [esp + 0x12c]
lea ecx, [esp + 0x18]
push ecx
call fcn.00402c90
mov ecx, dword [esp + 0x1c]
add esp, 4
call fcn.00403a00
mov byte [esp + 0x2c8], 0x10
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x40699e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40699e
mov edi, 0x10
push edi
push str.ERROR_
push str.Check_if_Agent_Registry_Export_DCAgent.reg_file_available
push ebx
call dword [sym.imp.USER32.dll_MessageBoxA]
push str.Error_:_Check_if_Agent_Registry_Export_DCAgent.reg_file_available_n
call fcn.00402b00
mov byte [esp + 0x2cc], 0x10
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40672e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c8], 0xf
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406756
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c8], 0xe
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40677e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c8], 9
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406a1b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x406a1b
push str.Main_Entry_For_Agent_Uninstallation_n
call fcn.0057b33c
add esp, 4
call fcn.004055a0
test eax, eax
jne 0x4067d8
call fcn.00401380
test eax, eax
jne 0x4067d8
push str.Validation_Ignored_
jmp 0x406929
lea ecx, [esp + 0x18]
push ecx
lea ecx, [esp + 0x3c]
call fcn.00404570
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406806
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp dword [esp + 0x5c], ebx
jne 0x406924
push str.Validation_failed__Uninstallation_of_Agent_wont_occur_n
call fcn.0057b33c
add esp, 4
push str.Validation_failed__Uninstallation_of_Agent_wont_occur_n
call fcn.00402b00
mov byte [esp + 0x2cc], 0xf
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
add esp, 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406852
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c8], 0xe
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40687a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c8], 9
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4068a2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0xbc]
call fcn.00409020
lea ecx, [esp + 0xa0]
call fcn.00409020
lea ecx, [esp + 0x84]
call fcn.00409020
lea ecx, [esp + 0x68]
call fcn.00409020
lea ecx, [esp + 0x110]
call fcn.00409020
lea ecx, [esp + 0xd8]
call fcn.00409020
lea ecx, [esp + 0xf4]
call fcn.00409020
mov byte [esp + 0x2c8], 1
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40647f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x40647f
push str.Validation_Success__Uninstallation_of_Agent_begins_n
call fcn.0057b33c
add esp, 4
lea ecx, [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x40]
push str.AgentUpgradation
mov dword [esp + 0x1c], ebx
call fcn.00407040
cmp dword [esp + 0x14], ebx
je 0x40695d
push str._nAgent_Upgradation_initiated__n
call fcn.0057b33c
add esp, 4
jmp 0x406973
push str._nAgent_Uninstallation_initiated__n
call fcn.0057b33c
add esp, 4
lea ecx, [esp + 0x38]
call fcn.00406e60
push str.Agent_Uninstallation_Successful_n
call fcn.0057b33c
add esp, 4
push str.Agent_Uninstallation_Successful_n
call fcn.00402b00
mov eax, dword [esp + 0x68]
add esp, 4
cmp eax, ebx
je 0x40699e
push eax
call fcn.0057bec0
add esp, 4
mov byte [esp + 0x2c8], 0xf
mov eax, dword [esp + 0x28]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4069c6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c8], 0xe
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4069ee
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c8], 9
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x406a16
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, 0x10
cmp dword [esp + 0xd0], edi
jb 0x406a34
mov ecx, dword [esp + 0xbc]
push ecx
call fcn.0057af7f
add esp, 4
mov esi, 0xf
mov byte [esp + 0xbc], bl
mov dword [esp + 0xcc], ebx
mov dword [esp + 0xd0], esi
cmp dword [esp + 0xb4], edi
jb 0x406a67
mov edx, dword [esp + 0xa0]
push edx
call fcn.0057af7f
add esp, 4
mov byte [esp + 0xa0], bl
mov dword [esp + 0xb0], ebx
mov dword [esp + 0xb4], esi
cmp dword [esp + 0x98], edi
jb 0x406a95
mov eax, dword [esp + 0x84]
push eax
call fcn.0057af7f
add esp, 4
mov byte [esp + 0x84], bl
mov dword [esp + 0x94], ebx
mov dword [esp + 0x98], esi
cmp dword [esp + 0x7c], edi
jb 0x406abd
mov ecx, dword [esp + 0x68]
push ecx
call fcn.0057af7f
add esp, 4
mov byte [esp + 0x68], bl
mov dword [esp + 0x78], ebx
mov dword [esp + 0x7c], esi
cmp dword [esp + 0x124], edi
jb 0x406ae2
mov edx, dword [esp + 0x110]
push edx
call fcn.0057af7f
add esp, 4
mov byte [esp + 0x110], bl
mov dword [esp + 0x120], ebx
mov dword [esp + 0x124], esi
cmp dword [esp + 0xec], edi
jb 0x406b10
mov eax, dword [esp + 0xd8]
push eax
call fcn.0057af7f
add esp, 4
mov byte [esp + 0xd8], bl
mov dword [esp + 0xe8], ebx
mov dword [esp + 0xec], esi
cmp dword [esp + 0x108], edi
jb 0x406b3e
mov ecx, dword [esp + 0xf4]
push ecx
call fcn.0057af7f
add esp, 4
mov byte [esp + 0x2c8], 1
mov eax, dword [esp + 0x1c]
add eax, 0xfffffff0
or ecx, 0xffffffff
lea edx, [eax + 0xc]
mov byte [esp + 0xf4], bl
mov dword [esp + 0x104], ebx
mov dword [esp + 0x108], esi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x406b7b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x38]
call fcn.00402a80
cmp dword [esp + 0x140], edi
jb 0x406b9d
mov ecx, dword [esp + 0x12c]
push ecx
call fcn.0057af7f
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x2c0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x2a8]
xor ecx, esp
call fcn.0057af8a
mov esp, ebp
pop ebp
ret