Function at 0x420e90
Capabilities:
Check for peb ntglobalflag flag
Get number of processors
Resolve function by parsing pe exports

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x48103e
mov eax, dword fs:[0]
push eax
sub esp, 0xa0
push ebx
push esi
push edi
mov eax, dword [0x49b950]
xor eax, esp
push eax
lea eax, [esp + 0xb0]
mov dword fs:[0], eax
mov esi, ecx
mov dword [esp + 0x48], esi
mov dword [esp + 0x38], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0xb8], 0
mov dword [esp + 0x5c], 0
mov dword [esp + 0x60], 0
mov dword [esp + 0x64], 0
mov dword [esp + 0x68], 0
mov dword [esp + 0x54], 0
mov dword [esp + 0x58], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x50], 0
xor edi, edi
mov dword [esp + 0x30], 0
mov dword [esp + 0x34], edi
mov byte [esp + 0xb8], 5
test esi, esi
jne 0x420f69
mov eax, dword [0x49df20]
cmp eax, 0x49df20
je 0x423667
test byte [eax + 0x1c], 8
je 0x423667
cmp byte [eax + 0x19], 1
jb 0x423667
lea ecx, [esi + 0x5c]
jmp 0x423654
cmp dword [esi + 0x10], 3
ja 0x423637
mov ecx, 0x5057b4
call fcn.0041c780
mov ebx, dword [0x5057a8]
mov dword [esp + 0x2c], ebx
cmp ebx, dword [0x5057ac]
jne 0x420fd2
mov eax, dword [esi + 0x10]
test eax, eax
je 0x420fa0
cmp eax, 3
je 0x420fa0
cmp eax, 2
jne 0x420fd2
mov ecx, dword [0x49df20]
cmp ecx, 0x49df20
je 0x420fd8
test byte [ecx + 0x1c], 1
je 0x420fd8
cmp byte [ecx + 0x19], 2
jb 0x420fd8
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x5e
call fcn.00401000
add esp, 8
mov ecx, dword [0x49df20]
mov esi, dword [sym.imp.KERNEL32.dll_SetEvent]
mov dword [esp + 0x24], 0
mov eax, connect
cmp ebx, dword [0x5057ac]
je 0x422978
mov edi, dword [ebx]
mov edx, dword [ebx + 4]
mov dword [esp + 0x14], edi
mov dword [esp + 0x40], edi
test edx, edx
je 0x42101a
lea eax, [edx + 4]
mov ecx, 1
lock xadd dword [eax], ecx
mov ecx, dword [0x49df20]
mov esi, dword [esp + 0x3c]
mov dword [esp + 0x38], edi
mov dword [esp + 0x3c], edx
test esi, esi
je 0x421056
lea eax, [esi + 4]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x421050
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
or edx, 0xffffffff
lock xadd dword [eax], edx
jne 0x421050
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov ecx, dword [0x49df20]
mov esi, dword [esp + 0x48]
mov eax, dword [esi + 0x10]
test eax, eax
je 0x42106a
cmp eax, 3
jne 0x4217d9
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4210a0
cmp byte [ecx + 0x19], 2
jb 0x4210a0
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x5f
call fcn.00401000
mov ecx, dword [0x49df20]
add esp, 8
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4210da
cmp byte [ecx + 0x19], 2
jb 0x4210da
push dword [esp + 0x24]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x60
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421111
cmp byte [ecx + 0x19], 2
jb 0x421111
push edi
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x61
call fcn.00401580
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x42114b
cmp byte [ecx + 0x19], 2
jb 0x42114b
lea eax, [edi + 0x40]
push eax
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x62
call fcn.00401580
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421188
cmp byte [ecx + 0x19], 2
jb 0x421188
lea eax, [edi + 0x80]
push eax
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x63
call fcn.00401580
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4211c5
cmp byte [ecx + 0x19], 2
jb 0x4211c5
lea eax, [edi + 0x100]
push eax
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x64
call fcn.00401580
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421201
cmp byte [ecx + 0x19], 2
jb 0x421201
push dword [edi + 0x200]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x65
call fcn.0041cd40
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x42124b
cmp byte [ecx + 0x19], 2
jb 0x42124b
mov eax, dword [edi + 0x208]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x66
push dword [eax + 0x10]
call fcn.00401020
mov edi, dword [esp + 0x4c]
mov ecx, dword [0x49df20]
add esp, 0xc
mov dword [esp + 0x14], edi
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4212a1
cmp byte [ecx + 0x19], 2
jb 0x4212a1
mov eax, dword [edi + 0x214]
sub eax, dword [edi + 0x20c]
mov edx, 0x48d038
sar eax, 3
push eax
mov eax, dword [edi + 0x210]
sub eax, dword [edi + 0x20c]
sar eax, 3
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x67
call fcn.00401050
mov ecx, dword [0x49df20]
add esp, 0x10
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4212f7
cmp byte [ecx + 0x19], 2
jb 0x4212f7
mov eax, dword [edi + 0x228]
sub eax, dword [edi + 0x220]
mov edx, 0x48d038
sar eax, 3
push eax
mov eax, dword [edi + 0x224]
sub eax, dword [edi + 0x220]
sar eax, 3
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x68
call fcn.00401050
mov ecx, dword [0x49df20]
add esp, 0x10
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421333
cmp byte [ecx + 0x19], 2
jb 0x421333
push dword [edi + 0x234]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x69
call fcn.0041cd40
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x42137e
cmp byte [ecx + 0x19], 2
jb 0x42137e
cmp byte [edi + 0x23c], 0
mov edx, str.false
mov eax, str.true
cmove eax, edx
push eax
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x6a
call fcn.00401580
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4213c9
cmp byte [ecx + 0x19], 2
jb 0x4213c9
cmp byte [edi + 0x23d], 0
mov edx, str.false
mov eax, str.true
cmove eax, edx
push eax
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x6b
call fcn.00401580
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421414
cmp byte [ecx + 0x19], 2
jb 0x421414
cmp byte [edi + 0x23e], 0
mov edx, str.false
mov eax, str.true
cmove eax, edx
push eax
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x6c
call fcn.00401580
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421450
cmp byte [ecx + 0x19], 2
jb 0x421450
push dword [edi + 0x240]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x6d
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421486
cmp byte [ecx + 0x19], 2
jb 0x421486
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x6e
call fcn.00401000
mov ecx, dword [0x49df20]
add esp, 8
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4214cf
cmp byte [ecx + 0x19], 2
jb 0x4214cf
mov eax, dword [edi + 0x258]
sub eax, dword [edi + 0x254]
mov edx, 0x48d038
push eax
push dword [edi + 0x264]
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x6f
call fcn.00401050
mov ecx, dword [0x49df20]
add esp, 0x10
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421519
cmp byte [ecx + 0x19], 2
jb 0x421519
mov eax, dword [edi + 0x29c]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x70
push dword [eax + 0x10]
call fcn.00401020
mov edi, dword [esp + 0x4c]
mov ecx, dword [0x49df20]
add esp, 0xc
mov dword [esp + 0x14], edi
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421563
cmp byte [ecx + 0x19], 2
jb 0x421563
mov eax, dword [edi + 0x2c8]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x71
push dword [eax + 0x10]
call fcn.00401020
mov edi, dword [esp + 0x4c]
mov ecx, dword [0x49df20]
add esp, 0xc
mov dword [esp + 0x14], edi
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x42159f
cmp byte [ecx + 0x19], 2
jb 0x42159f
push dword [edi + 0x2cc]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x72
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4215e9
cmp byte [ecx + 0x19], 2
jb 0x4215e9
mov eax, dword [edi + 0x2d0]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x73
push dword [eax + 0x10]
call fcn.00401020
mov edi, dword [esp + 0x4c]
mov ecx, dword [0x49df20]
add esp, 0xc
mov dword [esp + 0x14], edi
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x42161f
cmp byte [ecx + 0x19], 2
jb 0x42161f
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x74
call fcn.00401000
mov ecx, dword [0x49df20]
add esp, 8
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421668
cmp byte [ecx + 0x19], 2
jb 0x421668
mov eax, dword [edi + 0x2dc]
sub eax, dword [edi + 0x2d8]
mov edx, 0x48d038
push eax
push dword [edi + 0x2e8]
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x75
call fcn.00401050
mov ecx, dword [0x49df20]
add esp, 0x10
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4216b2
cmp byte [ecx + 0x19], 2
jb 0x4216b2
mov eax, dword [edi + 0x320]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x76
push dword [eax + 0x10]
call fcn.00401020
mov edi, dword [esp + 0x4c]
mov ecx, dword [0x49df20]
add esp, 0xc
mov dword [esp + 0x14], edi
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4216fc
cmp byte [ecx + 0x19], 2
jb 0x4216fc
mov eax, dword [edi + 0x34c]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x77
push dword [eax + 0x10]
call fcn.00401020
mov edi, dword [esp + 0x4c]
mov ecx, dword [0x49df20]
add esp, 0xc
mov dword [esp + 0x14], edi
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421738
cmp byte [ecx + 0x19], 2
jb 0x421738
push dword [edi + 0x350]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x78
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x421782
cmp byte [ecx + 0x19], 2
jb 0x421782
mov eax, dword [edi + 0x354]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x79
push dword [eax + 0x10]
call fcn.00401020
mov edi, dword [esp + 0x4c]
mov ecx, dword [0x49df20]
add esp, 0xc
mov dword [esp + 0x14], edi
cmp ecx, 0x49df20
je 0x4217d9
test byte [ecx + 0x1c], 1
je 0x4217d9
cmp byte [ecx + 0x19], 2
jb 0x4217d9
mov eax, dword [edi + 0x360]
sub eax, dword [edi + 0x358]
push 0x3e8
sar eax, 3
push eax
mov eax, dword [edi + 0x35c]
sub eax, dword [edi + 0x358]
mov edx, 0x48d038
sar eax, 3
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x7a
call fcn.00401080
mov ecx, dword [0x49df20]
add esp, 0x14
mov eax, dword [esi + 0x10]
test eax, eax
je 0x4217e9
cmp eax, 2
jne 0x422952
lea ecx, [edi + 0x218]
call fcn.0041c780
mov edi, dword [edi + 0x20c]
mov esi, dword [esp + 0x14]
mov dword [esp + 0x28], edi
cmp edi, dword [esi + 0x210]
jne 0x421840
mov ecx, dword [0x49df20]
cmp ecx, 0x49df20
je 0x421846
test byte [ecx + 0x1c], 1
je 0x421846
cmp byte [ecx + 0x19], 2
jb 0x421846
push dword [esp + 0x24]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x7b
call fcn.00401020
add esp, 0xc
mov ecx, dword [0x49df20]
mov dword [esp + 0x1c], 0
cmp edi, dword [esi + 0x210]
je 0x4220ab
lea ebx, [ebx]
mov edx, dword [edi + 4]
mov ebx, dword [edi]
mov dword [esp + 0x18], ebx
test edx, edx
je 0x42187f
lea eax, [edx + 4]
mov ecx, 1
lock xadd dword [eax], ecx
mov ecx, dword [0x49df20]
mov esi, dword [esp + 0x60]
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x60], edx
test esi, esi
je 0x4218bb
lea eax, [esi + 4]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x4218b5
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
or edx, 0xffffffff
lock xadd dword [eax], edx
jne 0x4218b5
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov ecx, dword [0x49df20]
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x4218f1
cmp byte [ecx + 0x19], 2
jb 0x4218f1
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x7c
call fcn.00401000
mov ecx, dword [0x49df20]
add esp, 8
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x42192b
cmp byte [ecx + 0x19], 2
jb 0x42192b
push dword [esp + 0x1c]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x7d
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421963
cmp byte [ecx + 0x19], 2
jb 0x421963
push dword [ebx]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x7e
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x42199c
cmp byte [ecx + 0x19], 2
jb 0x42199c
push dword [ebx + 4]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x7f
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x4219d5
cmp byte [ecx + 0x19], 2
jb 0x4219d5
push dword [ebx + 8]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x80
call fcn.0041cd40
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421a0e
cmp byte [ecx + 0x19], 2
jb 0x421a0e
push dword [ebx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x81
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421a47
cmp byte [ecx + 0x19], 2
jb 0x421a47
push dword [ebx + 0x18]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x82
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421a80
cmp byte [ecx + 0x19], 2
jb 0x421a80
push dword [ebx + 0x1c]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x83
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421ab9
cmp byte [ecx + 0x19], 2
jb 0x421ab9
push dword [ebx + 0x20]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x84
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421af2
cmp byte [ecx + 0x19], 2
jb 0x421af2
push dword [ebx + 0x24]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x85
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421b2b
cmp byte [ecx + 0x19], 2
jb 0x421b2b
push dword [ebx + 0x28]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x86
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421b60
cmp byte [ecx + 0x19], 2
jb 0x421b60
push dword [ebx + 0x40]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x87
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x421ba2
test byte [ecx + 0x1c], 1
je 0x421ba2
cmp byte [ecx + 0x19], 2
jb 0x421ba2
mov eax, dword [ebx + 0x4c]
sub eax, dword [ebx + 0x44]
push 0x64
sar eax, 3
push eax
mov eax, dword [ebx + 0x48]
sub eax, dword [ebx + 0x44]
mov edx, 0x48d038
sar eax, 3
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x88
call fcn.00401080
add esp, 0x14
lea ecx, [ebx + 0x50]
call fcn.0041c780
mov esi, dword [ebx + 0x44]
cmp esi, dword [ebx + 0x48]
jne 0x421be6
mov eax, dword [0x49df20]
cmp eax, 0x49df20
je 0x421beb
test byte [eax + 0x1c], 1
je 0x421beb
cmp byte [eax + 0x19], 2
jb 0x421beb
push dword [esp + 0x1c]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x89
push dword [eax + 0x10]
call fcn.00401020
add esp, 0xc
mov eax, dword [0x49df20]
mov edx, dword [esp + 0x18]
xor ebx, ebx
cmp esi, dword [edx + 0x48]
je 0x422058
mov edi, edx
lea esp, [esp]
mov ecx, dword [esi + 4]
mov edx, dword [esi]
mov dword [esp + 0x10], edx
mov dword [esp + 0x70], edx
mov dword [esp + 0x20], ecx
test ecx, ecx
je 0x421c2a
lea eax, [ecx + 4]
mov ecx, 1
lock xadd dword [eax], ecx
mov eax, dword [0x49df20]
mov ecx, dword [esp + 0x20]
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x20], edx
mov dword [esp + 0x58], ecx
test edx, edx
je 0x421c6b
lea eax, [edx + 4]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x421c66
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 4]
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lea eax, [ecx + 8]
lock xadd dword [eax], edx
jne 0x421c66
mov eax, dword [ecx]
call dword [eax + 8]
mov eax, dword [0x49df20]
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421ca0
cmp byte [eax + 0x19], 2
jb 0x421ca0
push ebx
push dword [eax + 0x14]
mov edx, 0x48d038
push dword [eax + 0x10]
mov ecx, 0x8a
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421cda
cmp byte [eax + 0x19], 2
jb 0x421cda
mov ecx, dword [esp + 0x10]
mov edx, 0x48d038
push dword [ecx]
mov ecx, 0x8b
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421d17
cmp byte [eax + 0x19], 2
jb 0x421d17
mov ecx, dword [esp + 0x10]
mov edx, 0x48d038
movzx ecx, word [ecx + 4]
push ecx
push dword [eax + 0x14]
mov ecx, 0x8c
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421d52
cmp byte [eax + 0x19], 2
jb 0x421d52
mov ecx, dword [esp + 0x10]
mov edx, 0x48d038
push dword [ecx + 8]
mov ecx, 0x8d
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.0041cd40
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421d8d
cmp byte [eax + 0x19], 2
jb 0x421d8d
mov ecx, dword [esp + 0x10]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x8e
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.0041cd40
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421dc1
cmp byte [eax + 0x19], 2
jb 0x421dc1
push dword [eax + 0x14]
mov edx, 0x48d038
push dword [eax + 0x10]
mov ecx, 0x8f
call fcn.00401000
mov eax, dword [0x49df20]
add esp, 8
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421dfd
cmp byte [eax + 0x19], 2
jb 0x421dfd
mov ecx, dword [esp + 0x10]
add ecx, 0x28
push ecx
push dword [eax + 0x14]
mov edx, 0x48d038
push dword [eax + 0x10]
mov ecx, 0x90
call fcn.00401580
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421e38
cmp byte [eax + 0x19], 2
jb 0x421e38
mov ecx, dword [esp + 0x10]
mov edx, 0x48d038
push dword [ecx + 0x38]
mov ecx, 0x91
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421e73
cmp byte [eax + 0x19], 2
jb 0x421e73
mov ecx, dword [esp + 0x10]
mov edx, 0x48d038
push dword [ecx + 0x3c]
mov ecx, 0x92
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421eaf
cmp byte [eax + 0x19], 2
jb 0x421eaf
mov ecx, dword [esp + 0x10]
add ecx, 0x40
push ecx
push dword [eax + 0x14]
mov edx, 0x48d038
push dword [eax + 0x10]
mov ecx, 0x93
call fcn.00401580
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421eea
cmp byte [eax + 0x19], 2
jb 0x421eea
mov ecx, dword [esp + 0x10]
mov edx, 0x48d038
push dword [ecx + 0x50]
mov ecx, 0x94
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421f25
cmp byte [eax + 0x19], 2
jb 0x421f25
mov ecx, dword [esp + 0x10]
mov edx, 0x48d038
push dword [ecx + 0x54]
mov ecx, 0x95
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421f6c
cmp byte [eax + 0x19], 2
jb 0x421f6c
mov eax, dword [esp + 0x10]
mov eax, dword [eax + 0x58]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x96
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
mov edx, dword [esp + 0x7c]
add esp, 0xc
jmp 0x421f70
mov edx, dword [esp + 0x10]
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x421fb4
cmp byte [eax + 0x19], 2
jb 0x421fb4
mov al, byte [edx + 0x5c]
movzx eax, al
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x97
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
mov edx, dword [esp + 0x7c]
add esp, 0xc
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x422007
cmp byte [eax + 0x19], 2
jb 0x422007
mov ecx, dword [edx + 0x10]
mov eax, dword [edx + 0x60]
push dword [ecx + 0x3a8]
mov edx, 0x48d038
push dword [ecx + 0x3ac]
mov ecx, 0x98
push eax
mov eax, dword [0x49df20]
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.00401080
mov eax, dword [0x49df20]
mov edx, dword [esp + 0x84]
add esp, 0x14
cmp eax, 0x49df20
je 0x422043
test byte [eax + 0x1c], 1
je 0x422043
cmp byte [eax + 0x19], 2
jb 0x422043
mov al, byte [edx + 0x64]
movzx eax, al
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0x99
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
add esi, 8
inc ebx
cmp esi, dword [edi + 0x48]
jne 0x421c00
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 0x18]
mov eax, connect
lea ecx, [edx + 0x50]
lock xadd dword [ecx], eax
test eax, 0x40000000
jne 0x422085
cmp eax, 0x80000000
jle 0x422085
lock bts dword [ecx], 0x1e
jb 0x422085
call fcn.0041c6e0
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov esi, dword [esp + 0x14]
inc dword [esp + 0x1c]
add edi, 8
mov dword [esp + 0x28], edi
cmp edi, dword [esi + 0x210]
je 0x4220a7
mov ecx, dword [0x49df20]
jmp 0x421860
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x38]
add ecx, 0x218
mov eax, connect
lock xadd dword [ecx], eax
test eax, 0x40000000
jne 0x4220df
cmp eax, 0x80000000
jle 0x4220df
lock bts dword [ecx], 0x1e
jb 0x4220df
call fcn.0041c6e0
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov esi, dword [esp + 0x38]
mov dword [esp + 0x28], esi
lea eax, [esi + 0x22c]
mov ecx, eax
mov dword [esp + 0x6c], eax
call fcn.0041c780
mov edi, dword [esi + 0x220]
mov dword [esp + 0x18], edi
cmp edi, dword [esi + 0x224]
jne 0x422140
mov ecx, dword [0x49df20]
cmp ecx, 0x49df20
je 0x422146
test byte [ecx + 0x1c], 1
je 0x422146
cmp byte [ecx + 0x19], 2
jb 0x422146
push dword [esp + 0x24]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x9a
call fcn.00401020
add esp, 0xc
mov ecx, dword [0x49df20]
mov dword [esp + 0x1c], 0
cmp edi, dword [esi + 0x224]
je 0x422914
lea ebx, [ebx]
mov edx, dword [edi + 4]
mov esi, dword [edi]
mov dword [esp + 0x14], esi
test edx, edx
je 0x42217f
lea eax, [edx + 4]
mov ecx, 1
lock xadd dword [eax], ecx
mov ecx, dword [0x49df20]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x68]
mov dword [esp + 0x68], edx
test esi, esi
je 0x4221bb
lea eax, [esi + 4]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x4221b5
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
or edx, 0xffffffff
lock xadd dword [eax], edx
jne 0x4221b5
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov ecx, dword [0x49df20]
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x4221f1
cmp byte [ecx + 0x19], 2
jb 0x4221f1
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0x9b
call fcn.00401000
mov ecx, dword [0x49df20]
add esp, 8
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x42222b
cmp byte [ecx + 0x19], 2
jb 0x42222b
push dword [esp + 0x1c]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x9c
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
mov esi, dword [esp + 0x14]
je 0x422267
cmp byte [ecx + 0x19], 2
jb 0x422267
push dword [esi]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x9d
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x4222a0
cmp byte [ecx + 0x19], 2
jb 0x4222a0
push dword [esi + 4]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x9e
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x4222d9
cmp byte [ecx + 0x19], 2
jb 0x4222d9
push dword [esi + 8]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0x9f
call fcn.0041cd40
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x422312
cmp byte [ecx + 0x19], 2
jb 0x422312
push dword [esi + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa0
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x42234b
cmp byte [ecx + 0x19], 2
jb 0x42234b
push dword [esi + 0x18]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa1
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x422384
cmp byte [ecx + 0x19], 2
jb 0x422384
push dword [esi + 0x1c]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa2
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x4223bd
cmp byte [ecx + 0x19], 2
jb 0x4223bd
push dword [esi + 0x20]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa3
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x4223f6
cmp byte [ecx + 0x19], 2
jb 0x4223f6
push dword [esi + 0x24]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa4
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x42242f
cmp byte [ecx + 0x19], 2
jb 0x42242f
push dword [esi + 0x28]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa5
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x422468
cmp byte [ecx + 0x19], 2
jb 0x422468
push dword [esi + 0x2c]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa6
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x42249d
cmp byte [ecx + 0x19], 2
jb 0x42249d
push dword [esi + 0x30]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa7
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x4224df
test byte [ecx + 0x1c], 1
je 0x4224df
cmp byte [ecx + 0x19], 2
jb 0x4224df
mov eax, dword [esi + 0x3c]
sub eax, dword [esi + 0x34]
push 0x64
sar eax, 3
push eax
mov eax, dword [esi + 0x38]
sub eax, dword [esi + 0x34]
mov edx, 0x48d038
sar eax, 3
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa8
call fcn.00401080
add esp, 0x14
mov ecx, dword [esp + 0x14]
add ecx, 0x40
call fcn.0041c780
mov eax, dword [esp + 0x14]
mov esi, dword [eax + 0x34]
cmp esi, dword [eax + 0x38]
jne 0x422531
mov ecx, dword [0x49df20]
cmp ecx, 0x49df20
je 0x422537
test byte [ecx + 0x1c], 1
je 0x422537
cmp byte [ecx + 0x19], 2
jb 0x422537
push dword [esp + 0x1c]
mov edx, 0x48d038
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xa9
call fcn.00401020
mov eax, dword [esp + 0x20]
add esp, 0xc
mov ecx, dword [0x49df20]
mov dword [esp + 0x20], 0
cmp esi, dword [eax + 0x38]
je 0x422883
mov ebx, dword [esp + 0x20]
mov edi, dword [esp + 0x14]
mov eax, dword [esi + 4]
mov edx, dword [esi]
mov dword [esp + 0x10], edx
mov dword [esp + 0x78], edx
mov dword [esp + 0x20], eax
test eax, eax
je 0x42257b
add eax, 4
mov ecx, 1
lock xadd dword [eax], ecx
mov ecx, dword [0x49df20]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x20], edx
mov dword [esp + 0x50], eax
test edx, edx
je 0x4225bd
lea eax, [edx + 4]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x4225b7
mov eax, dword [edx]
mov ecx, edx
call dword [eax + 4]
mov ecx, dword [esp + 0x20]
or edx, 0xffffffff
lea eax, [ecx + 8]
lock xadd dword [eax], edx
jne 0x4225b7
mov eax, dword [ecx]
call dword [eax + 8]
mov ecx, dword [0x49df20]
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x4225f4
cmp byte [ecx + 0x19], 2
jb 0x4225f4
push ebx
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0xaa
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x422630
cmp byte [ecx + 0x19], 2
jb 0x422630
mov eax, dword [esp + 0x10]
mov edx, 0x48d038
push dword [eax]
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xab
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x42266f
cmp byte [ecx + 0x19], 2
jb 0x42266f
mov eax, dword [esp + 0x10]
mov edx, 0x48d038
movzx eax, word [eax + 4]
push eax
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xac
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x4226ac
cmp byte [ecx + 0x19], 2
jb 0x4226ac
mov eax, dword [esp + 0x10]
mov edx, 0x48d038
push dword [eax + 8]
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xad
call fcn.0041cd40
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x4226e9
cmp byte [ecx + 0x19], 2
jb 0x4226e9
mov eax, dword [esp + 0x10]
mov edx, 0x48d038
push dword [eax + 0x10]
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xae
call fcn.0041cd40
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x42271f
cmp byte [ecx + 0x19], 2
jb 0x42271f
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0xaf
call fcn.00401000
mov ecx, dword [0x49df20]
add esp, 8
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x42275d
cmp byte [ecx + 0x19], 2
jb 0x42275d
mov eax, dword [esp + 0x10]
add eax, 0x28
push eax
push dword [ecx + 0x14]
mov edx, 0x48d038
push dword [ecx + 0x10]
mov ecx, 0xb0
call fcn.00401580
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x42279a
cmp byte [ecx + 0x19], 2
jb 0x42279a
mov eax, dword [esp + 0x10]
mov edx, 0x48d038
push dword [eax + 0x38]
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xb1
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x4227d7
cmp byte [ecx + 0x19], 2
jb 0x4227d7
mov eax, dword [esp + 0x10]
mov edx, 0x48d038
push dword [eax + 0x3c]
push dword [ecx + 0x14]
push dword [ecx + 0x10]
mov ecx, 0xb2
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
mov eax, dword [esp + 0x10]
je 0x422830
cmp byte [ecx + 0x19], 2
jb 0x422830
mov ecx, dword [eax + 0x10]
mov eax, dword [eax + 0x44]
push dword [ecx + 0x3b0]
mov edx, 0x48d038
push dword [ecx + 0x3b4]
mov ecx, 0xb3
push eax
mov eax, dword [0x49df20]
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.00401080
mov ecx, dword [0x49df20]
mov eax, dword [esp + 0x8c]
add esp, 0x14
cmp ecx, 0x49df20
je 0x42286e
test byte [ecx + 0x1c], 1
je 0x42286e
cmp byte [ecx + 0x19], 2
jb 0x42286e
mov al, byte [eax + 0x48]
movzx eax, al
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0xb4
push dword [eax + 0x10]
call fcn.00401020
mov ecx, dword [0x49df20]
add esp, 0xc
add esi, 8
inc ebx
cmp esi, dword [edi + 0x38]
jne 0x422550
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
mov ecx, dword [esp + 0x14]
mov eax, connect
add ecx, 0x40
lock xadd dword [ecx], eax
test eax, 0x40000000
jne 0x4228f2
cmp eax, 0x80000000
jle 0x4228f2
lock bts dword [ecx], 0x1e
jb 0x4228f2
mov esi, dword [ecx + 4]
test esi, esi
jne 0x4228eb
push esi
push esi
push esi
push esi
call dword [sym.imp.KERNEL32.dll_CreateEventA]
mov edx, eax
test edx, edx
je 0x4229b5
mov esi, dword [esp + 0x14]
mov ecx, edx
xor eax, eax
add esi, 0x44
lock cmpxchg dword [esi], ecx
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
mov esi, eax
test esi, esi
je 0x4228e9
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x4228eb
mov esi, edx
push esi
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov eax, dword [esp + 0x28]
inc dword [esp + 0x1c]
add edi, 8
mov dword [esp + 0x18], edi
cmp edi, dword [eax + 0x224]
je 0x422914
mov ecx, dword [0x49df20]
jmp 0x422160
mov ecx, dword [esp + 0x6c]
mov eax, connect
lock xadd dword [ecx], eax
test eax, 0x40000000
jne 0x42294c
cmp eax, 0x80000000
jle 0x42294c
lock bts dword [ecx], 0x1e
jb 0x42294c
call fcn.0041c6e0
mov esi, dword [sym.imp.KERNEL32.dll_SetEvent]
push eax
call esi
mov ecx, dword [0x49df20]
jmp 0x422958
mov ecx, dword [0x49df20]
mov esi, dword [sym.imp.KERNEL32.dll_SetEvent]
inc dword [esp + 0x24]
add ebx, 8
mov dword [esp + 0x2c], ebx
cmp ebx, dword [0x5057ac]
jne 0x420ff7
mov edi, dword [esp + 0x34]
mov eax, connect
mov ecx, 0x5057b4
lock xadd dword [ecx], eax
test eax, 0x40000000
jne 0x42299e
cmp eax, 0x80000000
jle 0x42299e
lock bts dword [ecx], 0x1e
jb 0x42299e
call fcn.0041c6e0
push eax
call esi
mov eax, dword [esp + 0x48]
mov eax, dword [eax + 0x10]
test eax, eax
je 0x4229e8
cmp eax, 1
je 0x4229e8
xor ebx, ebx
jmp 0x42366c
push str.boost::thread_resource_error
push 0xb
lea ecx, [esp + 0x88]
call fcn.0041c150
mov dword [esp + 0x80], vtable.boost::thread_resource_error.0
lea eax, [esp + 0x80]
push eax
mov byte [esp + 0xbc], 6
call fcn.0041c0e0
mov ebx, 0x505840
mov ecx, ebx
call fcn.0041c780
mov esi, dword [0x505834]
cmp esi, dword [0x505838]
jne 0x422a32
mov eax, dword [0x49df20]
cmp eax, 0x49df20
je 0x422a37
test byte [eax + 0x1c], 1
je 0x422a37
cmp byte [eax + 0x19], 2
jb 0x422a37
push dword [eax + 0x14]
mov edx, 0x48d038
push dword [eax + 0x10]
mov ecx, 0xb5
call fcn.00401000
add esp, 8
mov eax, dword [0x49df20]
mov dword [esp + 0x18], 0
cmp esi, dword [0x505838]
je 0x422bc5
jmp 0x422a50
mov edx, dword [esi + 4]
mov ebx, dword [esi]
test edx, edx
je 0x422a6a
lea eax, [edx + 4]
mov ecx, 1
lock xadd dword [eax], ecx
mov eax, dword [0x49df20]
mov dword [esp + 0x30], ebx
mov dword [esp + 0x34], edx
test edi, edi
je 0x422aa1
lea eax, [edi + 4]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
jne 0x422a9c
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
lea eax, [edi + 8]
or edx, 0xffffffff
lock xadd dword [eax], edx
jne 0x422a9c
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 8]
mov eax, dword [0x49df20]
cmp eax, 0x49df20
je 0x422ba9
test byte [eax + 0x1c], 1
je 0x422ad5
cmp byte [eax + 0x19], 2
jb 0x422ad5
push dword [eax + 0x14]
mov edx, 0x48d038
push dword [eax + 0x10]
mov ecx, 0xb6
call fcn.00401000
mov eax, dword [0x49df20]
add esp, 8
cmp eax, 0x49df20
je 0x422ba9
test byte [eax + 0x1c], 1
je 0x422b0d
cmp byte [eax + 0x19], 2
jb 0x422b0d
push dword [esp + 0x18]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0xb7
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422ba9
test byte [eax + 0x1c], 1
je 0x422b43
cmp byte [eax + 0x19], 2
jb 0x422b43
push dword [ebx]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0xb8
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422ba9
test byte [eax + 0x1c], 1
je 0x422b76
cmp byte [eax + 0x19], 2
jb 0x422b76
push dword [ebx + 4]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0xb9
push dword [eax + 0x10]
call fcn.00401020
mov eax, dword [0x49df20]
add esp, 0xc
cmp eax, 0x49df20
je 0x422ba9
test byte [eax + 0x1c], 1
je 0x422ba9
cmp byte [eax + 0x19], 2
jb 0x422ba9
push dword [ebx + 8]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0xba
push dword [eax + 0x10]
call fcn.0041cd40
mov eax, dword [0x49df20]
add esp, 0xc
inc dword [esp + 0x18]
mov edi, dword [esp + 0x34]
add esi, 8
cmp esi, dword [0x505838]
jne 0x422a50
mov ebx, 0x505840
mov eax, connect
lock xadd dword [ebx], eax
test eax, 0x40000000
jne 0x422bf1
cmp eax, 0x80000000
jle 0x422bf1
lock bts dword [ebx], 0x1e
jb 0x422bf1
mov ecx, ebx
call fcn.0041c6e0
push eax
call dword [sym.imp.KERNEL32.dll_SetEvent]
mov edx, dword [0x49df20]
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422c2d
cmp byte [edx + 0x19], 2
jb 0x422c2d
push dword [edx + 0x14]
mov ecx, 0xbb
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401000
mov edx, dword [0x49df20]
add esp, 8
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422c68
cmp byte [edx + 0x19], 2
jb 0x422c68
push 0x5058d0
push dword [edx + 0x14]
mov ecx, 0xbc
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401580
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422ca3
cmp byte [edx + 0x19], 2
jb 0x422ca3
push 0x505910
push dword [edx + 0x14]
mov ecx, 0xbd
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401580
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422cde
cmp byte [edx + 0x19], 2
jb 0x422cde
push 0x505950
push dword [edx + 0x14]
mov ecx, 0xbe
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401580
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422d1a
cmp byte [edx + 0x19], 2
jb 0x422d1a
push dword [0x505830]
mov ecx, 0xbf
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422d64
cmp byte [edx + 0x19], 2
jb 0x422d64
cmp dword [0x505714], 0x10
mov eax, 0x505700
cmovae eax, dword [0x505700]
push eax
push dword [edx + 0x14]
mov ecx, 0xc0
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401580
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422dae
cmp byte [edx + 0x19], 2
jb 0x422dae
cmp dword [0x50572c], 0x10
mov eax, 0x505718
cmovae eax, dword [0x505718]
push eax
push dword [edx + 0x14]
mov ecx, 0xc1
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401580
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422dea
cmp byte [edx + 0x19], 2
jb 0x422dea
push dword [0x505730]
mov ecx, 0xc2
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422e34
cmp byte [edx + 0x19], 2
jb 0x422e34
cmp dword [0x505748], 0x10
mov eax, 0x505734
cmovae eax, dword [0x505734]
push eax
push dword [edx + 0x14]
mov ecx, 0xc3
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401580
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422e70
cmp byte [edx + 0x19], 2
jb 0x422e70
push dword [0x505758]
mov ecx, 0xc4
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422eac
cmp byte [edx + 0x19], 2
jb 0x422eac
push dword [0x50575c]
mov ecx, 0xc5
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422ee8
cmp byte [edx + 0x19], 2
jb 0x422ee8
push dword [0x505764]
mov ecx, 0xc6
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422f24
cmp byte [edx + 0x19], 2
jb 0x422f24
push dword [0x505768]
mov ecx, 0xc7
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422f60
cmp byte [edx + 0x19], 2
jb 0x422f60
push dword [0x50576c]
mov ecx, 0xc8
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422f9c
cmp byte [edx + 0x19], 2
jb 0x422f9c
push dword [0x505770]
mov ecx, 0xc9
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x422fd8
cmp byte [edx + 0x19], 2
jb 0x422fd8
push dword [0x505774]
mov ecx, 0xca
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423014
cmp byte [edx + 0x19], 2
jb 0x423014
push dword [0x505778]
mov ecx, 0xcb
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423050
cmp byte [edx + 0x19], 2
jb 0x423050
push dword [0x50577c]
mov ecx, 0xcc
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x42308c
cmp byte [edx + 0x19], 2
jb 0x42308c
push dword [0x505780]
mov ecx, 0xcd
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x4230c8
cmp byte [edx + 0x19], 2
jb 0x4230c8
push dword [0x505784]
mov ecx, 0xce
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423104
cmp byte [edx + 0x19], 2
jb 0x423104
push dword [0x505788]
mov ecx, 0xcf
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423140
cmp byte [edx + 0x19], 2
jb 0x423140
push dword [0x50578c]
mov ecx, 0xd0
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x42317c
cmp byte [edx + 0x19], 2
jb 0x42317c
push dword [0x505790]
mov ecx, 0xd1
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x4231b8
cmp byte [edx + 0x19], 2
jb 0x4231b8
push dword [0x505794]
mov ecx, 0xd2
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x4231f4
cmp byte [edx + 0x19], 2
jb 0x4231f4
push dword [0x505798]
mov ecx, 0xd3
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423230
cmp byte [edx + 0x19], 2
jb 0x423230
push dword [0x50579c]
mov ecx, 0xd4
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x42326c
cmp byte [edx + 0x19], 2
jb 0x42326c
push dword [0x505760]
mov ecx, 0xd5
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x4232a8
cmp byte [edx + 0x19], 2
jb 0x4232a8
push dword [0x5057a0]
mov ecx, 0xd6
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x4232e4
cmp byte [edx + 0x19], 2
jb 0x4232e4
push dword [0x5057a4]
mov ecx, 0xd7
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x42333a
cmp byte [edx + 0x19], 2
jb 0x42333a
mov eax, dword [0x5057b0]
sub eax, dword [0x5057a8]
push 0x14
sar eax, 3
push eax
mov eax, dword [0x5057ac]
sub eax, dword [0x5057a8]
mov ecx, 0xd8
sar eax, 3
push eax
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401080
mov edx, dword [0x49df20]
add esp, 0x14
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x42337f
cmp byte [edx + 0x19], 2
jb 0x42337f
mov eax, dword [0x50582c]
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0xd9
push dword [eax + 0x10]
call fcn.00401020
mov edx, dword [0x49df20]
mov edi, dword [esp + 0x40]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x4233d5
cmp byte [edx + 0x19], 2
jb 0x4233d5
mov eax, dword [0x50583c]
sub eax, dword [0x505834]
push 0x64
sar eax, 3
push eax
mov eax, dword [0x505838]
sub eax, dword [0x505834]
mov ecx, 0xda
sar eax, 3
push eax
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401080
mov edx, dword [0x49df20]
add esp, 0x14
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423411
cmp byte [edx + 0x19], 2
jb 0x423411
push dword [0x505848]
mov ecx, 0xdb
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.0041cd40
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x42344d
cmp byte [edx + 0x19], 2
jb 0x42344d
push dword [0x505850]
mov ecx, 0xdc
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.0041cd40
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423496
cmp byte [edx + 0x19], 2
jb 0x423496
mov ax, word [0x505880]
movzx eax, ax
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0xdd
push dword [eax + 0x10]
call fcn.00401020
mov edx, dword [0x49df20]
mov edi, dword [esp + 0x40]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x4234df
cmp byte [edx + 0x19], 2
jb 0x4234df
mov ax, word [0x505882]
movzx eax, ax
push eax
mov eax, dword [0x49df20]
mov edx, 0x48d038
push dword [eax + 0x14]
mov ecx, 0xde
push dword [eax + 0x10]
call fcn.00401020
mov edx, dword [0x49df20]
mov edi, dword [esp + 0x40]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x42351b
cmp byte [edx + 0x19], 2
jb 0x42351b
push dword [0x505898]
mov ecx, 0xdf
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423557
cmp byte [edx + 0x19], 2
jb 0x423557
push dword [0x505888]
mov ecx, 0xe0
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423593
cmp byte [edx + 0x19], 2
jb 0x423593
push dword [0x50588c]
mov ecx, 0xe1
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x4235cf
cmp byte [edx + 0x19], 2
jb 0x4235cf
push dword [0x505890]
mov ecx, 0xe2
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423607
cmp byte [edx + 0x19], 2
jb 0x423607
push dword [0x505894]
mov ecx, 0xe3
push dword [edx + 0x14]
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401020
mov edx, dword [0x49df20]
add esp, 0xc
cmp edx, 0x49df20
je 0x423633
test byte [edx + 0x1c], 1
je 0x423633
cmp byte [edx + 0x19], 2
jb 0x423633
push dword [edx + 0x14]
mov ecx, 0xe4
push dword [edx + 0x10]
mov edx, 0x48d038
call fcn.00401000
add esp, 8
xor ebx, ebx
jmp 0x42366c
mov eax, dword [0x49df20]
cmp eax, 0x49df20
je 0x423667
test byte [eax + 0x1c], 8
je 0x423667
cmp byte [eax + 0x19], 1
jb 0x423667
mov ecx, 0x5d
push dword [eax + 0x14]
mov edx, 0x48d038
push dword [eax + 0x10]
call fcn.00401000
add esp, 8
mov ebx, 0xfffffffc
mov byte [esp + 0xb8], 4
test edi, edi
je 0x42369f
or esi, 0xffffffff
lea eax, [edi + 4]
mov ecx, esi
lock xadd dword [eax], ecx
jne 0x42369f
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 4]
lea eax, [edi + 8]
mov edx, esi
lock xadd dword [eax], edx
jne 0x42369f
mov eax, dword [edi]
mov ecx, edi
call dword [eax + 8]
mov byte [esp + 0xb8], 3
mov esi, dword [esp + 0x50]
or edi, 0xffffffff
test esi, esi
je 0x4236d6
lea eax, [esi + 4]
mov ecx, edi
lock xadd dword [eax], ecx
jne 0x4236d6
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
mov edx, edi
lock xadd dword [eax], edx
jne 0x4236d6
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov byte [esp + 0xb8], 2
mov esi, dword [esp + 0x58]
test esi, esi
je 0x42370a
lea eax, [esi + 4]
mov ecx, edi
lock xadd dword [eax], ecx
jne 0x42370a
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
mov edx, edi
lock xadd dword [eax], edx
jne 0x42370a
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov byte [esp + 0xb8], 1
mov esi, dword [esp + 0x68]
test esi, esi
je 0x42373e
lea eax, [esi + 4]
mov ecx, edi
lock xadd dword [eax], ecx
jne 0x42373e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
mov edx, edi
lock xadd dword [eax], edx
jne 0x42373e
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov byte [esp + 0xb8], 0
mov esi, dword [esp + 0x60]
test esi, esi
je 0x423772
lea eax, [esi + 4]
mov ecx, edi
lock xadd dword [eax], ecx
jne 0x423772
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
mov edx, edi
lock xadd dword [eax], edx
jne 0x423772
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 8]
mov dword [esp + 0xb8], 0xffffffff
mov esi, dword [esp + 0x3c]
test esi, esi
je 0x4237a8
lea eax, [esi + 4]
mov ecx, edi
lock xadd dword [eax], ecx
jne 0x4237a8
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 4]
lea eax, [esi + 8]
lock xadd dword [eax], edi
dec edi
jne 0x4237a8
mov edx, dword [esi]
mov ecx, esi
call dword [edx + 8]
mov eax, ebx
mov ecx, dword [esp + 0xb0]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret