Function at 0x402550
Capabilities:
Access peb ldr_data
Check if file exists
Check os version
Read .ini file
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x55c1be
mov eax, dword fs:[0]
push eax
sub esp, 0x2b0
mov eax, dword [0x5b4450]
xor eax, esp
mov dword [esp + 0x2a8], eax
push ebx
push esi
push edi
mov eax, dword [0x5b4450]
xor eax, esp
push eax
lea eax, [esp + 0x2c0]
mov dword fs:[0], eax
mov esi, ecx
xor ebx, ebx
mov dword [esp + 0x1c], esi
mov dword [esp + 0x40], 0x2f
mov dword [esp + 0x34], ebx
call fcn.0040bea0
mov dword [esp + 0x38], eax
call fcn.00442c4d
mov eax, dword [eax + 4]
push str._CMFPUNINST
lea ecx, [esp + 0x30]
mov dword [esp + 0x34], eax
add esi, 0x5c
call fcn.00401210
mov dword [esp + 0x2c8], ebx
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
push eax
call fcn.004017c0
lea edi, [eax + 0x10]
mov dword [esp + 0x2cc], 0xffffffff
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
add esp, 4
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], ebx
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40261b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
push edi
mov dword [esp + 0x2cc], 1
call fcn.004017c0
add eax, 0x10
add esp, 4
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], esi
mov dword [esp + 0x9c], ebx
mov byte [esp + 0x2c8], 3
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40266b
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov esi, dword [esp + 0x1c]
push 0x58a8f8
lea ecx, [esp + 0x24]
add esi, 0x60
call fcn.00401210
mov byte [esp + 0x2c8], 4
mov eax, dword [esp + 0x20]
add eax, 0xfffffff0
push eax
call fcn.004017c0
lea edi, [eax + 0x10]
mov byte [esp + 0x2cc], 3
mov eax, dword [esp + 0x24]
add eax, 0xfffffff0
add esp, 4
mov dword [esp + 0x6c], edi
mov dword [esp + 0x70], ebx
mov dword [esp + 0x74], esi
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4026cf
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
push edi
mov byte [esp + 0x2cc], 5
call fcn.004017c0
add eax, 0x10
add esp, 4
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], ebx
mov dword [esp + 0xa8], esi
mov byte [esp + 0x2c8], 3
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40271c
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov edi, dword [esp + 0x1c]
lea ecx, [esp + 0x40]
mov dword [esp + 0x2c8], 6
mov eax, dword [edi + 4]
push ecx
push eax
call fcn.00534847
add esp, 8
cmp eax, ebx
je 0x40274a
sub eax, dword [edi + 4]
sar eax, 1
cmp eax, 0xffffffff
jne 0x402760
push fcn.00401500
push 2
push 0xc
lea edx, [esp + 0xa0]
push edx
jmp 0x402820
lea ecx, [edi + 4]
call fcn.00404dc0
call fcn.0044033f
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
jne 0x402782
push 0x80004005
call fcn.004010a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x24], eax
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x80], ebx
mov dword [esp + 0x84], ebx
push 0x2f
lea ecx, [esp + 0x80]
mov byte [esp + 0x2cc], 8
mov esi, dword [edi + 4]
push ecx
push esi
mov ecx, edi
call fcn.00404530
mov eax, dword [esp + 0x7c]
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x80]
jne 0x402856
lea ebx, [esp + 0x7c]
mov byte [esp + 0x2c8], 7
call fcn.00405390
mov byte [esp + 0x2c8], 6
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 0x40280f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push fcn.00401500
push 2
push 0xc
lea ecx, [esp + 0xa0]
push ecx
mov dword [esp + 0x2d8], 0xffffffff
call fcn.0053392f
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.005337cb
mov esp, ebp
pop ebp
ret
xor ebx, ebx
call fcn.0044033f
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
je 0x402778
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x14], eax
mov byte [esp + 0x2c8], 9
call fcn.0044033f
xor ecx, ecx
cmp eax, ebx
setne cl
cmp ecx, ebx
je 0x402778
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
mov byte [esp + 0x2c8], 0xa
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx]
mov esi, dword [esp + 0x14]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x402908
cmp dword [esi + 0xc], ebx
lea edi, [esi + 0xc]
jl 0x4028fa
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4028fa
push eax
call fcn.004017c0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4028f1
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x14], ebx
jmp 0x402908
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x1c]
call fcn.004016b0
mov ecx, dword [esp + 0x14]
push 3
push 0x58aa04
push ecx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x402936
mov edx, dword [esp + 0x14]
push 0x58aa0c
push edx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x402941
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x24], 1
mov ecx, dword [esp + 0x14]
push 3
push 0x58a9e4
push ecx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x40296f
mov edx, dword [esp + 0x14]
push 0x58a9ec
push edx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x40297a
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x28], 1
mov ecx, dword [esp + 0x14]
push 3
push 0x58a9d4
push ecx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x4029ac
mov edx, dword [esp + 0x14]
push 0x58a9dc
push edx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x402abe
cmp dword [esp + 0x38], 0xa
mov eax, dword [esp + 0x1c]
mov dword [eax + 0x2c], 1
jne 0x402abe
mov edi, eax
add edi, 0x18
mov ecx, edi
call fcn.00401600
mov ebx, dword [esp + 0x24]
push 0x22
push ebx
call fcn.00534819
add esp, 8
test eax, eax
jne 0x4029e6
or esi, 0xffffffff
jmp 0x4029ec
sub eax, ebx
sar eax, 1
mov esi, eax
push 0x58aaec
push ebx
call fcn.00534847
add esp, 8
test eax, eax
jne 0x402a03
or ebx, 0xffffffff
jmp 0x402a0b
sub eax, dword [esp + 0x24]
sar eax, 1
mov ebx, eax
mov ecx, dword [esp + 0x24]
push 0x58aaec
push ecx
call fcn.00534847
add esp, 8
test eax, eax
jne 0x402a26
or eax, 0xffffffff
jmp 0x402a2c
sub eax, dword [esp + 0x24]
sar eax, 1
sub esi, ebx
dec esi
push esi
inc eax
push eax
lea edx, [esp + 0x58]
push edx
lea ecx, [esp + 0x30]
call fcn.00404fc0
push eax
mov ecx, edi
mov byte [esp + 0x2cc], 0xb
call fcn.00401520
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x50]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402a78
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, edi
call fcn.00404ea0
mov ecx, edi
call fcn.00404e20
mov edi, dword [edi]
cmp dword [edi - 0xc], 0
je 0x402ab0
push edi
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x402aa3
mov dword [esp + 0x34], 1
jmp 0x402abe
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x44], 1
jmp 0x402abe
mov edx, dword [esp + 0x30]
mov dword [edx + 0x194], 1
mov eax, dword [esp + 0x14]
push 3
push 0x58a9b4
push eax
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x402af0
mov ecx, dword [esp + 0x14]
push 0x58a9bc
push ecx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x402c77
mov edx, dword [esp + 0x14]
mov eax, dword [edx - 0xc]
push eax
push 3
lea eax, [esp + 0x80]
push eax
lea ecx, [esp + 0x20]
call fcn.00404fc0
mov byte [esp + 0x2c8], 0xc
mov ecx, dword [eax]
mov ebx, dword [esp + 0x18]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x402b6e
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x402b5c
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x402b5c
push eax
call fcn.004017c0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x402b53
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x18], ebx
jmp 0x402b6e
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.004016b0
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x78]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402b96
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x1c]
add ecx, 0x18
push ecx
mov ecx, ebx
call fcn.004048f0
push 0x58aaf0
lea ecx, [esp + 0x40]
call fcn.00401210
mov byte [esp + 0x2c8], 0xd
mov esi, dword [esp + 0x3c]
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
mov dword [esp + 0x2c], esp
mov dword [esp + 0x2c], esp
call eax
cmp dword [esi - 4], 0
lea edx, [esi - 4]
jl 0x402bee
cmp eax, dword [esi - 0x10]
jne 0x402bee
lea edi, [esi - 0x10]
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x402c26
mov ecx, dword [esi - 0xc]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x403691
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov eax, dword [esi - 0xc]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.005339f7
add esp, 0x10
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
add edi, 0x10
mov dword [ecx], edi
mov ecx, esi
call fcn.00404030
cmp dword [esp + 0x38], 0xa
mov eax, 1
mov dword [esi + 0x34], eax
jne 0x402c4d
mov dword [esp + 0x34], eax
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x3c]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x402c7b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x402c7b
mov ebx, dword [esp + 0x18]
mov ecx, dword [esp + 0x14]
push 3
push 0x58a990
push ecx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x402cad
mov edx, dword [esp + 0x14]
push 0x58a998
push edx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x402e31
mov eax, dword [esp + 0x14]
mov eax, dword [eax - 0xc]
push eax
push 3
lea ecx, [esp + 0x94]
push ecx
lea ecx, [esp + 0x20]
call fcn.00404fc0
mov byte [esp + 0x2c8], 0xe
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x402d27
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x402d15
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x402d15
push eax
call fcn.004017c0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x402d0c
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x18], ebx
jmp 0x402d27
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.004016b0
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x8c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402d52
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x1c]
add ecx, 0x18
push ecx
mov ecx, ebx
call fcn.004048f0
push str.Delete_Driver_Name
lea ecx, [esp + 0x48]
call fcn.00401210
mov byte [esp + 0x2c8], 0xf
mov esi, dword [esp + 0x44]
push ecx
mov ecx, dword [esi - 0x10]
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
mov dword [esp + 0x2c], esp
mov dword [esp + 0x2c], esp
call eax
cmp dword [esi - 4], 0
lea edx, [esi - 4]
jl 0x402daa
cmp eax, dword [esi - 0x10]
jne 0x402daa
lea edi, [esi - 0x10]
mov ecx, 1
lock xadd dword [edx], ecx
jmp 0x402de2
mov ecx, dword [esi - 0xc]
mov edx, dword [eax]
mov edx, dword [edx]
push 2
push ecx
mov ecx, eax
call edx
mov edi, eax
test edi, edi
je 0x403691
mov eax, dword [esi - 0xc]
mov dword [edi + 4], eax
mov eax, dword [esi - 0xc]
lea ecx, [eax + eax + 2]
push ecx
lea edx, [eax + eax + 2]
push esi
push edx
lea eax, [edi + 0x10]
push eax
call fcn.005339f7
add esp, 0x10
mov ecx, dword [esp + 0x2c]
mov esi, dword [esp + 0x20]
add edi, 0x10
mov dword [ecx], edi
mov ecx, esi
call fcn.00404030
cmp dword [esp + 0x38], 0xa
mov eax, 1
mov dword [esi + 0x38], eax
jne 0x402e09
mov dword [esp + 0x34], eax
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x44]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x402e31
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, 1
cmp dword [esp + 0x34], esi
jne 0x402ea8
xor ecx, ecx
push 0x206
push ecx
lea edx, [esp + 0xb6]
push edx
mov word [esp + 0xb8], cx
call fcn.005373f0
mov eax, dword [esp + 0x28]
mov eax, dword [eax + 0x18]
add esp, 0xc
push eax
push 0x104
lea ecx, [esp + 0xb4]
push ecx
push 0x58ab40
push str.UninstDriverPackage
push str.Uninstaller_Info
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push 0x58ab40
lea edx, [esp + 0xb0]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpiW]
mov ecx, dword [esp + 0x30]
neg eax
sbb eax, eax
inc eax
mov dword [ecx + 0x194], eax
mov edx, dword [esp + 0x14]
push 3
push 0x58a9f4
push edx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x402eda
mov eax, dword [esp + 0x14]
push 0x58a9fc
push eax
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x402f94
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx - 0xc]
push eax
push 3
lea edx, [esp + 0x60]
push edx
lea ecx, [esp + 0x20]
call fcn.00404fc0
mov byte [esp + 0x2c8], 0x10
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x402f51
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x402f3f
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x402f3f
push eax
call fcn.004017c0
mov ebx, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x402f36
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
add ebx, 0x10
mov dword [esp + 0x18], ebx
jmp 0x402f51
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.004016b0
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x58]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402f79
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [esp + 0x1c]
lea ecx, [esi + 0x10]
push ecx
mov ecx, ebx
call fcn.004048f0
mov dword [esi + 0x3c], 1
mov esi, 1
mov edx, dword [esp + 0x14]
push 3
push 0x58a9c4
push edx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x402fc2
mov eax, dword [esp + 0x14]
push 0x58a9cc
push eax
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x402fc9
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x30], esi
mov edx, dword [esp + 0x14]
push 3
push 0x58a96c
push edx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x402ff7
mov eax, dword [esp + 0x14]
push 0x58a974
push eax
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x402ffe
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0x40], esi
mov edx, dword [esp + 0x14]
push 3
push 0x58a95c
push edx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x403030
mov eax, dword [esp + 0x14]
push 0x58a964
push eax
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x4031f4
push 0x58a8c8
lea ecx, [esp + 0x24]
call fcn.00401210
lea ecx, [esp + 0x40]
mov byte [esp + 0x2c8], 0x11
mov esi, dword [esp + 0x24]
push ecx
push esi
call fcn.00534847
add esp, 8
test eax, eax
jne 0x403061
or eax, 0xffffffff
jmp 0x403065
sub eax, esi
sar eax, 1
dec eax
push eax
push 1
lea edx, [esp + 0x50]
push edx
lea ecx, [esp + 0x30]
call fcn.00404fc0
mov byte [esp + 0x2c8], 0x12
mov ecx, dword [eax]
mov esi, dword [esp + 0x20]
lea eax, [ecx - 0x10]
add esi, 0xfffffff0
cmp eax, esi
je 0x4030dc
cmp dword [esi + 0xc], 0
lea edi, [esi + 0xc]
jl 0x4030ce
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4030ce
push eax
call fcn.004017c0
mov dword [esp + 0x2c], eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [edi], eax
dec eax
test eax, eax
jg 0x4030c1
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
mov ecx, dword [esp + 0x28]
add ecx, 0x10
mov dword [esp + 0x20], ecx
jmp 0x4030dc
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x28]
call fcn.004016b0
mov byte [esp + 0x2c8], 0x11
mov eax, dword [esp + 0x48]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x403104
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx - 0xc]
push eax
push 3
lea edx, [esp + 0x68]
push edx
lea ecx, [esp + 0x20]
call fcn.00404fc0
mov byte [esp + 0x2c8], 0x13
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x40317b
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x403169
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x403169
push eax
call fcn.004017c0
mov edi, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x403160
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea ebx, [edi + 0x10]
mov dword [esp + 0x18], ebx
jmp 0x40317b
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.004016b0
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x2c8], 0x11
mov eax, dword [esp + 0x60]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4031a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [esp + 0x20]
push ecx
mov ecx, ebx
call fcn.004048f0
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x20]
add edx, 0x5e4
push edx
push 0x58ab94
push eax
call fcn.005348ff
mov byte [esp + 0x2d4], 0xa
mov eax, dword [esp + 0x2c]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4031f4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
push 4
push str._DN
push ecx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x403226
mov edx, dword [esp + 0x14]
push 0x58a988
push edx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x403334
push 0x58a8c8
lea ecx, [esp + 0x6c]
call fcn.00401210
mov byte [esp + 0x2c8], 0x14
mov eax, dword [esp + 0x14]
mov eax, dword [eax - 0xc]
push eax
push 4
lea ecx, [esp + 0x98]
push ecx
lea ecx, [esp + 0x20]
call fcn.00404fc0
mov byte [esp + 0x2c8], 0x15
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x4032b6
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x4032a4
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4032a4
push eax
call fcn.004017c0
mov edi, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x40329b
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea ebx, [edi + 0x10]
mov dword [esp + 0x18], ebx
jmp 0x4032b6
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.004016b0
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x2c8], 0x14
mov eax, dword [esp + 0x90]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4032e1
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edi, dword [esp + 0x1c]
lea esi, [edi + 0x20]
push esi
mov ecx, ebx
call fcn.004048f0
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0
je 0x40330a
mov edx, dword [esp + 0x30]
mov eax, 1
mov dword [edi + 0x48], eax
mov dword [edx + 0x194], eax
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x68]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403338
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
jmp 0x403338
mov edi, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
push 4
push str._PN
push ecx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x40336a
mov edx, dword [esp + 0x14]
push 0x58a9ac
push edx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x403470
push 0x58a8c8
lea ecx, [esp + 0x58]
call fcn.00401210
mov byte [esp + 0x2c8], 0x16
mov eax, dword [esp + 0x14]
mov eax, dword [eax - 0xc]
push eax
push 4
lea ecx, [esp + 0x54]
push ecx
lea ecx, [esp + 0x20]
call fcn.00404fc0
mov byte [esp + 0x2c8], 0x17
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x4033fb
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x4033e9
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x4033e9
push eax
call fcn.004017c0
mov edi, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x4033dc
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea ebx, [edi + 0x10]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x18], ebx
jmp 0x4033fb
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.004016b0
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x2c8], 0x16
mov eax, dword [esp + 0x4c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403423
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea esi, [edi + 0x1c]
push esi
mov ecx, ebx
call fcn.004048f0
mov ecx, dword [esi]
cmp dword [ecx - 0xc], 0
je 0x403448
mov edx, dword [esp + 0x30]
mov eax, 1
mov dword [edi + 0x4c], eax
mov dword [edx + 0x194], eax
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x54]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403470
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x14]
push 5
push 0x58a944
push ecx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x40349e
mov edx, dword [esp + 0x14]
push str._FUD
push edx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x4034a5
mov dword [edi + 0x54], 0
mov eax, dword [esp + 0x14]
push 5
push 0x58a92c
push eax
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x4034d3
mov ecx, dword [esp + 0x14]
push str._FDD
push ecx
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x4034da
mov dword [edi + 0x58], 0
mov edx, dword [esp + 0x14]
push 4
push str._UL
push edx
call fcn.00534305
add esp, 0xc
test eax, eax
je 0x40350c
mov eax, dword [esp + 0x14]
push 0x58a924
push eax
call fcn.00533c47
add esp, 8
test eax, eax
jne 0x4035f8
push 0x58a8c8
lea ecx, [esp + 0x68]
call fcn.00401210
mov byte [esp + 0x2c8], 0x18
mov ecx, dword [esp + 0x14]
mov eax, dword [ecx - 0xc]
push eax
push 4
lea edx, [esp + 0x64]
push edx
lea ecx, [esp + 0x20]
call fcn.00404fc0
mov byte [esp + 0x2c8], 0x19
mov ecx, dword [eax]
lea eax, [ecx - 0x10]
lea esi, [ebx - 0x10]
cmp eax, esi
je 0x40359d
cmp dword [esi + 0xc], 0
lea ebx, [esi + 0xc]
jl 0x40358b
mov edx, dword [eax]
cmp edx, dword [esi]
jne 0x40358b
push eax
call fcn.004017c0
mov edi, eax
add esp, 4
or eax, 0xffffffff
lock xadd dword [ebx], eax
dec eax
test eax, eax
jg 0x40357e
mov ecx, dword [esi]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push esi
call eax
lea ebx, [edi + 0x10]
mov edi, dword [esp + 0x1c]
mov dword [esp + 0x18], ebx
jmp 0x40359d
mov eax, dword [ecx - 0xc]
push eax
push ecx
lea ecx, [esp + 0x20]
call fcn.004016b0
mov ebx, dword [esp + 0x18]
mov byte [esp + 0x2c8], 0x18
mov eax, dword [esp + 0x5c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4035c5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0x50
push edi
mov ecx, ebx
call fcn.004048f0
mov byte [esp + 0x2c8], 0xa
mov eax, dword [esp + 0x64]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4035f8
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor edi, edi
lea esi, [esp + 0x98]
mov eax, dword [esi + 4]
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx]
mov edx, dword [edx]
push eax
mov eax, dword [esi]
push eax
lea eax, [esi - 4]
push eax
lea eax, [esp + 0x20]
push eax
call edx
test eax, eax
jne 0x403628
inc edi
add esi, 0xc
cmp edi, 2
jb 0x403601
lea eax, [ebx - 0x10]
mov byte [esp + 0x2c8], 9
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40364c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x2c8], 8
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x403674
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x2c]
add eax, 4
mov dword [esp + 0x2c], eax
cmp eax, dword [esp + 0x80]
jne 0x402854
jmp 0x4027d6
call fcn.00401830
int3