Function at 0x427840
Capabilities:
Read .ini file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x587858
mov eax, dword fs:[0]
push eax
sub esp, 0x2c
push ebx
push esi
push edi
mov eax, dword [0x5e6990]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
call fcn.0045c778
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x427884
push 0x80004005
call fcn.00402e90
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x10], edi
mov dword [ebp - 4], 0
call fcn.0045c778
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x4278b4
push 0x80004005
call fcn.00402e90
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x34], eax
mov byte [ebp - 4], 1
mov eax, dword [esi + 0x85c]
push eax
push 0x2580
push str.Baud
push str.dlparam
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [esi + 0x394], eax
cmp eax, 0x8ca00
jg 0x4279be
je 0x4279b4
cmp eax, 0x9600
jg 0x427966
je 0x42795c
cmp eax, 0x2580
jg 0x427936
je 0x42792c
cmp eax, 0x960
je 0x427a49
cmp eax, 0x12c0
jne 0x427a49
mov eax, 1
jmp 0x427a52
mov eax, 2
jmp 0x427a52
cmp eax, 0x3840
je 0x427952
cmp eax, 0x4b00
jne 0x427a49
mov eax, 4
jmp 0x427a52
mov eax, 3
jmp 0x427a52
mov eax, 5
jmp 0x427a52
cmp eax, 0x1f400
jg 0x42799f
je 0x427995
cmp eax, 0xe100
je 0x42798b
cmp eax, 0x1c200
jne 0x427a49
mov eax, 7
jmp 0x427a52
mov eax, 6
jmp 0x427a52
mov eax, 8
jmp 0x427a52
cmp eax, 0x3e800
jne 0x427a49
mov eax, 9
jmp 0x427a52
mov eax, 0xa
jmp 0x427a52
cmp eax, 0x225510
jg 0x427a16
je 0x427a0f
cmp eax, 0xf4240
jg 0x4279f3
je 0x4279ec
cmp eax, 0xe1000
je 0x4279e5
cmp eax, 0xe15c4
jne 0x427a49
mov eax, 0xc
jmp 0x427a52
mov eax, 0xb
jmp 0x427a52
mov eax, 0xd
jmp 0x427a52
cmp eax, 0x16e360
je 0x427a08
cmp eax, 0x1e8480
jne 0x427a49
mov eax, 0xf
jmp 0x427a52
mov eax, 0xe
jmp 0x427a52
mov eax, 0x10
jmp 0x427a52
cmp eax, 0x3d0900
jg 0x427a42
je 0x427a3b
cmp eax, 0x2625a0
je 0x427a34
cmp eax, 0x2dc6c0
jne 0x427a49
mov eax, 0x12
jmp 0x427a52
mov eax, 0x11
jmp 0x427a52
mov eax, 0x13
jmp 0x427a52
cmp eax, 0x44aa20
je 0x427a4d
xor eax, eax
jmp 0x427a52
mov eax, 0x14
mov ecx, dword [esi + 0x90c]
push 0
push eax
push 0x14e
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
call fcn.0045c778
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x427a81
push 0x80004005
call fcn.00402e90
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x20], eax
mov byte [ebp - 4], 2
xor eax, eax
inc eax
push eax
lea ecx, [ebp - 0x20]
push str.device__d
push ecx
mov dword [ebp - 0x28], eax
call fcn.00403be0
mov eax, dword [edi - 8]
mov ebx, dword [esi + 0x85c]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x104
add esp, 0xc
or eax, ecx
jge 0x427ad6
push 0x104
lea ecx, [ebp - 0x10]
call fcn.00402ca0
mov edi, dword [ebp - 0x10]
mov edx, dword [ebp - 0x20]
push ebx
push 0x104
push edi
push 0x5b6d1b
push edx
push str.dlparam
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov eax, dword [edi - 8]
push eax
push edi
call fcn.0055a825
add esp, 8
test eax, eax
js 0x427c2d
cmp eax, dword [edi - 8]
jg 0x427c2d
mov dword [edi - 0xc], eax
mov byte [eax + edi], 0
cmp dword [edi - 0xc], 0
je 0x427b2c
lea ecx, [ebp - 0x10]
mov edi, 0x5f0534
call fcn.00435710
mov edi, dword [ebp - 0x10]
mov eax, dword [ebp - 0x28]
cmp eax, 0x104
jl 0x427a96
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.interface
push str.dlparam
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push 0
mov ebx, eax
mov eax, dword [esi + 0x898]
push ebx
push 0x14e
push eax
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, ebx
call fcn.004325a0
mov eax, dword [edi - 8]
mov ebx, dword [esi + 0x85c]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x14
or eax, ecx
jge 0x427b96
push 0x14
lea ecx, [ebp - 0x10]
call fcn.00402ca0
mov edi, dword [ebp - 0x10]
push ebx
push 0x14
push edi
push str.08000000
push str.startaddr1
push str.dlparam
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ebx, dword [esi + 0x3b0]
lea eax, [edi - 0x10]
sub ebx, 0x10
cmp eax, ebx
je 0x427c12
cmp dword [ebx + 0xc], 0
jl 0x427c02
mov ecx, dword [edi - 0x10]
cmp ecx, dword [ebx]
jne 0x427c02
lea eax, [edi - 0x10]
push eax
call fcn.00402b00
mov dword [ebp - 0x28], eax
add esp, 4
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x427bf4
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, dword [ebp - 0x28]
add eax, 0x10
mov dword [esi + 0x3b0], eax
jmp 0x427c12
mov eax, dword [edi - 0xc]
push eax
push edi
lea ecx, [esi + 0x3b0]
call fcn.00402d70
cmp dword [edi - 0xc], 0
mov ebx, dword [edi - 0x10]
lea eax, [edi - 0x10]
je 0x427c68
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
jge 0x427c43
cmp dword [edi - 8], 0
jge 0x427c37
push 0x80070057
call fcn.00402e90
mov dword [edi - 0xc], 0
mov byte [edi], 0
jmp 0x427c68
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427c59
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [ebx]
mov eax, dword [edx + 0xc]
mov ecx, ebx
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x10], edi
mov eax, dword [edi - 8]
push eax
push edi
call fcn.0055a825
add esp, 8
test eax, eax
js 0x427c2d
cmp eax, dword [edi - 8]
jg 0x427c2d
mov dword [edi - 0xc], eax
mov byte [eax + edi], 0
mov eax, dword [esi + 0x3b0]
push eax
lea ecx, [esi + 0x614]
call fcn.004644b8
mov eax, dword [edi - 8]
mov ebx, dword [esi + 0x85c]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x14
or eax, ecx
jge 0x427cbc
push 0x14
lea ecx, [ebp - 0x10]
call fcn.00402ca0
mov edi, dword [ebp - 0x10]
push ebx
push 0x14
push edi
push str.08000000
push str.startaddr2
push str.dlparam
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ebx, dword [esi + 0x3b4]
lea eax, [edi - 0x10]
sub ebx, 0x10
cmp eax, ebx
je 0x427d38
cmp dword [ebx + 0xc], 0
jl 0x427d28
mov ecx, dword [edi - 0x10]
cmp ecx, dword [ebx]
jne 0x427d28
lea eax, [edi - 0x10]
push eax
call fcn.00402b00
mov dword [ebp - 0x28], eax
add esp, 4
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x427d1a
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, dword [ebp - 0x28]
add eax, 0x10
mov dword [esi + 0x3b4], eax
jmp 0x427d38
mov eax, dword [edi - 0xc]
push eax
push edi
lea ecx, [esi + 0x3b4]
call fcn.00402d70
cmp dword [edi - 0xc], 0
mov ebx, dword [edi - 0x10]
lea eax, [edi - 0x10]
je 0x427d8e
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
jge 0x427d69
cmp dword [edi - 8], 0
jge 0x427d5d
push 0x80070057
call fcn.00402e90
mov dword [edi - 0xc], 0
mov byte [edi], 0
jmp 0x427d8e
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427d7f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [ebx]
mov eax, dword [edx + 0xc]
mov ecx, ebx
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x10], edi
mov eax, dword [edi - 8]
push eax
push edi
call fcn.0055a825
add esp, 8
test eax, eax
js 0x427c2d
cmp eax, dword [edi - 8]
jg 0x427c2d
mov dword [edi - 0xc], eax
mov byte [eax + edi], 0
mov eax, dword [edi - 8]
mov ebx, dword [esi + 0x85c]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, 0x14
or eax, ecx
jge 0x427dd8
push 0x14
lea ecx, [ebp - 0x10]
call fcn.00402ca0
mov edi, dword [ebp - 0x10]
push ebx
push 0x14
push edi
push str.08000000
push str.startaddr3
push str.dlparam
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
mov ebx, dword [esi + 0x3b8]
lea eax, [edi - 0x10]
sub ebx, 0x10
cmp eax, ebx
je 0x427e54
cmp dword [ebx + 0xc], 0
jl 0x427e44
mov ecx, dword [edi - 0x10]
cmp ecx, dword [ebx]
jne 0x427e44
lea eax, [edi - 0x10]
push eax
call fcn.00402b00
mov dword [ebp - 0x28], eax
add esp, 4
lea eax, [ebx + 0xc]
or edx, 0xffffffff
lock xadd dword [eax], edx
dec edx
test edx, edx
jg 0x427e36
mov ecx, dword [ebx]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push ebx
call edx
mov eax, dword [ebp - 0x28]
add eax, 0x10
mov dword [esi + 0x3b8], eax
jmp 0x427e54
mov eax, dword [edi - 0xc]
push eax
push edi
lea ecx, [esi + 0x3b8]
call fcn.00402d70
cmp dword [edi - 0xc], 0
mov ebx, dword [edi - 0x10]
lea eax, [edi - 0x10]
je 0x427eaa
cmp dword [eax + 0xc], 0
lea ecx, [eax + 0xc]
jge 0x427e85
cmp dword [edi - 8], 0
jge 0x427e79
push 0x80070057
call fcn.00402e90
mov dword [edi - 0xc], 0
mov byte [edi], 0
jmp 0x427eaa
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x427e9b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov edx, dword [ebx]
mov eax, dword [edx + 0xc]
mov ecx, ebx
call eax
lea edi, [eax + 0x10]
mov dword [ebp - 0x10], edi
mov eax, dword [edi - 8]
push eax
push edi
call fcn.0055a825
add esp, 8
test eax, eax
js 0x427c2d
cmp eax, dword [edi - 8]
jg 0x427c2d
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
mov dword [edi - 0xc], eax
mov byte [eax + edi], 0
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.encfile1
push str.dlparam
call ebx
mov dword [esi + 0x3ec], eax
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.encfile2
push str.dlparam
call ebx
mov dword [esi + 0x3f0], eax
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.encfile3
push str.dlparam
call ebx
mov dword [esi + 0x3f4], eax
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.crc_chk
push str.dlparam
call ebx
mov ecx, dword [esi + 0xd24]
push 0
push eax
push 0xf1
push ecx
call dword [sym.imp.USER32.dll_SendMessageA]
mov eax, dword [esi + 0x85c]
push eax
push 1
push str.enablepartition1
push str.dlparam
call ebx
mov dword [esi + 0x3bc], eax
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.enablepartition2
push str.dlparam
call ebx
mov dword [esi + 0x3c0], eax
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.enablepartition3
push str.dlparam
call ebx
mov dword [esi + 0x3c4], eax
call fcn.0045c778
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x427fbb
push 0x80004005
call fcn.00402e90
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1c], eax
mov byte [ebp - 4], 3
call fcn.0045c778
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x427fe8
push 0x80004005
call fcn.00402e90
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 4
call fcn.0045c778
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x428015
push 0x80004005
call fcn.00402e90
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x28], eax
mov byte [ebp - 4], 5
call fcn.0045c778
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x428042
push 0x80004005
call fcn.00402e90
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x30], eax
mov byte [ebp - 4], 6
mov eax, dword [esi + 0x85c]
mov ebx, dword [sym.imp.KERNEL32.dll_GetPrivateProfileIntA]
push eax
push 0
push str.total
push str.dlparam
call ebx
mov dword [ebp - 0x2c], eax
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.pass
push str.dlparam
call ebx
mov dword [0x5f0090], eax
mov eax, dword [esi + 0x85c]
push eax
push 0
push str.fail
push str.dlparam
call ebx
push 0
push 0
push 0xffffffffffffffff
push 0x5bab90
push 0
push 0
mov dword [0x5f0094], eax
mov dword [ebp - 0x14], 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
test ebx, ebx
jle 0x42810e
xor ecx, ecx
lea eax, [ebx + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0045c711
add esp, 4
lea ecx, [ebx + ebx + 2]
push ecx
push 0
push eax
mov dword [ebp - 0x14], eax
call fcn.0055e260
mov edx, dword [ebp - 0x14]
add esp, 0xc
push ebx
push edx
push 0xffffffffffffffff
push 0x5bab90
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.LanguageLib.dll_Ordinal_1]
add esp, 4
xor ebx, ebx
mov dword [ebp - 0x24], eax
test eax, eax
je 0x428171
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
mov ecx, eax
push ecx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x14], eax
test eax, eax
jle 0x428171
inc eax
push eax
call fcn.0045c711
mov ebx, eax
mov eax, dword [ebp - 0x14]
add esp, 4
inc eax
push eax
push 0
push ebx
call fcn.0055e260
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x24]
add esp, 0xc
push 0
push 0
push edx
push ebx
push 0xffffffffffffffff
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ecx, dword [ebp - 0x2c]
push ecx
lea edx, [ebp - 0x1c]
push ebx
push edx
call fcn.00403be0
add esp, 0xc
push 0
push 0
push 0xffffffffffffffff
push 0x5bab98
push 0
push 0
mov dword [ebp - 0x14], 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
test ebx, ebx
jle 0x4281e9
xor ecx, ecx
lea eax, [ebx + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0045c711
add esp, 4
lea ecx, [ebx + ebx + 2]
push ecx
push 0
push eax
mov dword [ebp - 0x14], eax
call fcn.0055e260
mov edx, dword [ebp - 0x14]
add esp, 0xc
push ebx
push edx
push 0xffffffffffffffff
push 0x5bab98
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.LanguageLib.dll_Ordinal_1]
add esp, 4
xor ebx, ebx
mov dword [ebp - 0x24], eax
test eax, eax
je 0x42824c
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
mov ecx, eax
push ecx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x14], eax
test eax, eax
jle 0x42824c
inc eax
push eax
call fcn.0045c711
mov ebx, eax
mov eax, dword [ebp - 0x14]
add esp, 4
inc eax
push eax
push 0
push ebx
call fcn.0055e260
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x24]
add esp, 0xc
push 0
push 0
push edx
push ebx
push 0xffffffffffffffff
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ecx, dword [0x5f0090]
push ecx
lea edx, [ebp - 0x18]
push ebx
push edx
call fcn.00403be0
add esp, 0xc
push 0
push 0
push 0xffffffffffffffff
push 0x5baba0
push 0
push 0
mov dword [ebp - 0x14], 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov ebx, eax
test ebx, ebx
jle 0x4282c7
xor ecx, ecx
lea eax, [ebx + 1]
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0045c711
add esp, 4
lea ecx, [ebx + ebx + 2]
push ecx
push 0
push eax
mov dword [ebp - 0x14], eax
call fcn.0055e260
mov edx, dword [ebp - 0x14]
add esp, 0xc
push ebx
push edx
push 0xffffffffffffffff
push 0x5baba0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov eax, dword [ebp - 0x14]
push eax
call dword [sym.imp.LanguageLib.dll_Ordinal_1]
add esp, 4
xor ebx, ebx
mov dword [ebp - 0x24], eax
test eax, eax
je 0x42832a
push ebx
push ebx
push ebx
push ebx
push 0xffffffffffffffff
mov ecx, eax
push ecx
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov dword [ebp - 0x14], eax
test eax, eax
jle 0x42832a
inc eax
push eax
call fcn.0045c711
mov ebx, eax
mov eax, dword [ebp - 0x14]
add esp, 4
inc eax
push eax
push 0
push ebx
call fcn.0055e260
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x24]
add esp, 0xc
push 0
push 0
push edx
push ebx
push 0xffffffffffffffff
push eax
push 0
push 0
call dword [sym.imp.KERNEL32.dll_WideCharToMultiByte]
mov ecx, dword [0x5f0094]
push ecx
lea edx, [ebp - 0x28]
push ebx
push edx
call fcn.00403be0
mov eax, dword [ebp - 0x1c]
add esp, 0xc
push 1
push eax
add esi, 0x44c
push 1
mov ecx, esi
call fcn.00470f2b
mov ecx, dword [ebp - 0x18]
push 1
push ecx
push 2
mov ecx, esi
call fcn.00470f2b
mov ebx, dword [ebp - 0x28]
push 1
push ebx
push 3
mov ecx, esi
call fcn.00470f2b
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x30]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x428394
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea eax, [ebx - 0x10]
mov byte [ebp - 4], 4
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4283b4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4283d7
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 - 0x1c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4283fa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x20]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x42841d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x34]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428440
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add edi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea ecx, [edi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x428463
mov ecx, dword [edi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push edi
call edx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret