Function at 0x4c16d0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x529b20
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x55609c]
xor eax, esp
push eax
lea eax, [esp + 0x70]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x80]
mov eax, dword [0x55dcc8]
mov ecx, dword [0x55dccc]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
lea eax, [esp + 0x80]
mov ecx, ebp
call fcn.004b7220
lea edi, [ebp + 0x238]
lea esi, [esp + 0x34]
mov dword [esp + 0x78], 0
call fcn.004af7a0
mov byte [esp + 0x78], 1
mov edx, dword [ebp + 0x138]
cmp byte [edx + 0x1c0], 0
mov edi, dword [esp + 0x34]
je 0x4c18fb
mov edx, dword [ebp + 0x38]
or edx, dword [ebp + 0x3c]
mov eax, dword [ebp + 0xf0]
mov ecx, dword [ebp + 0xa8]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
je 0x4c1775
cdq
sub dword [ebp + 0x30], eax
sbb dword [ebp + 0x34], edx
mov eax, dword [ebp + 0x20]
or eax, dword [ebp + 0x24]
je 0x4c1786
mov eax, ecx
cdq
sub dword [ebp + 0x18], eax
sbb dword [ebp + 0x1c], edx
mov dl, byte [ebp + 0x34a]
and dl, 1
mov eax, dword [ebp + 0x138]
je 0x4c17a4
lea ecx, [eax + 0x938]
add eax, 0x920
jmp 0x4c17af
lea ecx, [eax + 0x908]
add eax, 0x8f0
test edi, edi
mov ebx, dword [ebp + 0x20]
mov dword [esp + 0x24], ecx
mov ecx, dword [ebp + 0x38]
mov dword [esp + 0x2c], eax
je 0x4c18c9
test dl, dl
jne 0x4c17ef
mov edx, dword [edi + 0x50]
or edx, dword [edi + 0x54]
je 0x4c17dc
mov eax, dword [esp + 0x18]
cdq
sub dword [edi + 0x48], eax
sbb dword [edi + 0x4c], edx
mov eax, dword [edi + 0x38]
or eax, dword [edi + 0x3c]
je 0x4c17ef
mov eax, dword [esp + 0x1c]
cdq
sub dword [edi + 0x30], eax
sbb dword [edi + 0x34], edx
test ecx, ecx
jle 0x4c185c
cmp dword [esp + 0x18], ecx
jl 0x4c185c
mov esi, dword [edi + 0x2e8]
add esi, 0x380
call fcn.00471470
test al, al
je 0x4c185c
lea ecx, [esp + 0x44]
push ecx
mov ecx, edi
call fcn.004644a0
mov ecx, eax
push 3
lea eax, [esp + 0x50]
call fcn.0044ed00
mov byte [esp + 0x78], 3
mov edx, dword [edi + 0x2e8]
push eax
add edx, 0x380
push edx
call fcn.004cd100
lea eax, [esp + 0x4c]
push eax
mov byte [esp + 0x7c], 2
call fcn.0044e810
lea eax, [esp + 0x44]
mov byte [esp + 0x78], 1
call fcn.00482950
test ebx, ebx
jle 0x4c18c9
cmp dword [esp + 0x1c], ebx
jl 0x4c18c9
mov esi, dword [edi + 0x2e8]
add esi, 0x380
call fcn.00471470
test al, al
je 0x4c18c9
lea ecx, [esp + 0x44]
push ecx
mov ecx, edi
call fcn.004644a0
mov ecx, eax
push 2
lea eax, [esp + 0x50]
call fcn.0044ed00
mov byte [esp + 0x78], 5
mov edx, dword [edi + 0x2e8]
push eax
add edx, 0x380
push edx
call fcn.004cd100
lea eax, [esp + 0x4c]
push eax
mov byte [esp + 0x7c], 4
call fcn.0044e810
lea eax, [esp + 0x44]
mov byte [esp + 0x78], 1
call fcn.00482950
mov ecx, dword [esp + 0x2c]
mov edx, dword [ecx + 0x10]
or edx, dword [ecx + 0x14]
je 0x4c18e0
mov eax, dword [esp + 0x18]
cdq
sub dword [ecx + 8], eax
sbb dword [ecx + 0xc], edx
mov eax, dword [esp + 0x24]
mov ecx, dword [eax + 0x10]
or ecx, dword [eax + 0x14]
je 0x4c18fb
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x24]
cdq
sub dword [ecx + 8], eax
sbb dword [ecx + 0xc], edx
test edi, edi
je 0x4c2254
test byte [ebp + 0x34a], 8
jne 0x4c2254
test byte [ebp + 0x34b], 0x10
je 0x4c19a2
test byte [ebp + 0x349], 0x20
je 0x4c19a2
lea eax, [ebp + 0x280]
call fcn.004c5390
test al, al
je 0x4c19a2
lea eax, [ebp + 0x270]
call fcn.004c5390
test al, al
je 0x4c19a2
mov edx, dword [ebp + 0x174]
mov eax, dword [ebp + 0x170]
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x3c]
push edx
push eax
push ebx
push esi
lea eax, [esp + 0x54]
call fcn.004276d0
mov ecx, dword [eax + 4]
mov edx, dword [eax]
push ecx
push edx
call fcn.004276f0
add esp, 0x18
cmp eax, 5
jl 0x4c19a2
push ebp
push edi
mov dword [ebp + 0x170], esi
mov dword [ebp + 0x174], ebx
call fcn.004a6280
add esp, 8
test byte [ebp + 0x34a], 8
jne 0x4c222d
push ebp
call fcn.004bfda0
mov eax, dword [ebp]
mov edx, dword [eax + 0x6c]
mov ecx, ebp
call edx
mov eax, dword [ebp + 0x154]
mov esi, dword [eax]
lea ebx, [ebp + 0x150]
mov edi, eax
lea esp, [esp]
cmp ebx, ebx
je 0x4c19ca
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp esi, edi
je 0x4c19f2
cmp esi, dword [ebx + 4]
jne 0x4c19d9
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov ecx, dword [esi + 8]
mov eax, dword [ecx]
mov edx, dword [eax + 0x60]
call edx
cmp esi, dword [ebx + 4]
jne 0x4c19ee
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov esi, dword [esi]
jmp 0x4c19c0
mov eax, dword [ebp]
mov edx, dword [eax + 4]
mov ecx, ebp
call edx
test al, al
je 0x4c1a08
or ebx, 0xffffffff
jmp 0x4c22e1
mov ecx, dword [ebp + 0x19c]
mov edx, dword [ebp + 0x198]
mov ebx, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
push ecx
push edx
push ebx
push edi
lea eax, [esp + 0x54]
call fcn.004276d0
mov ecx, dword [ebp + 0x190]
mov esi, eax
mov eax, dword [ebp + 0x194]
push eax
push ecx
push ebx
push edi
lea eax, [esp + 0x44]
call fcn.004276d0
mov edx, dword [esi + 4]
add esp, 0x20
cmp edx, dword [eax + 4]
jg 0x4c1a59
jl 0x4c1a57
mov ecx, dword [esi]
cmp ecx, dword [eax]
jae 0x4c1a59
mov eax, esi
movzx ebx, byte [ebp + 9]
mov edx, dword [eax]
mov edi, dword [eax + 4]
shr ebx, 1
and bl, 1
mov dword [esp + 0x2c], edx
je 0x4c1b2b
mov eax, dword [ebp + 0x2f4]
cdq
push edx
push eax
lea esi, [esp + 0x4c]
call fcn.004199a0
mov ecx, dword [eax]
add esp, 8
cmp edi, dword [eax + 4]
jl 0x4c1ac1
jg 0x4c1a95
cmp dword [esp + 0x2c], ecx
jbe 0x4c1ac1
test byte [ebp + 0x34a], 0x10
jne 0x4c1b2b
push 0x32
lea esi, [esp + 0x48]
call fcn.0042e810
mov eax, dword [ebp]
mov edx, dword [eax + 0x1c]
push 0
mov ecx, esi
push ecx
mov ecx, ebp
call edx
jmp 0x4c222d
test byte [ebp + 0x34a], 0x10
jne 0x4c1b2b
mov eax, dword [ebp]
mov edx, dword [eax + 0x20]
mov ecx, ebp
call edx
test al, al
je 0x4c1b2b
mov eax, dword [ebp + 0x138]
add eax, 0x44
mov eax, dword [eax + 0xd4]
cdq
push edx
push eax
lea esi, [esp + 0x4c]
call fcn.004199a0
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x34]
push ecx
push edx
push edi
push eax
call fcn.0044dd60
add esp, 0x18
test al, al
je 0x4c1b2b
push 0x33
lea esi, [esp + 0x48]
call fcn.0042e810
mov edx, dword [ebp]
mov edx, dword [edx + 0x1c]
push 0
mov eax, esi
push eax
mov ecx, ebp
call edx
jmp 0x4c222d
mov edx, dword [ebp + 0x184]
cmp edx, dword [ebp + 0x17c]
lea ecx, [ebp + 0x180]
lea eax, [ebp + 0x178]
ja 0x4c1b4d
jb 0x4c1b4f
mov edx, dword [ecx]
cmp edx, dword [eax]
jb 0x4c1b4f
mov eax, ecx
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
push ecx
push edx
push eax
push edi
lea eax, [esp + 0x54]
call fcn.004276d0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
add esp, 0x10
test bl, bl
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
je 0x4c1bea
test byte [ebp + 0x34a], 0x10
jne 0x4c1bea
lea ecx, [ebp + 0x260]
call fcn.004c51d0
test al, al
je 0x4c1bea
cmp dword [ebp + 0x308], 0
jne 0x4c1bea
mov al, byte [ebp + 0x349]
test al, 0x40
jne 0x4c1bea
test al, 8
je 0x4c1bea
mov esi, dword [esp + 0x34]
call fcn.004b7b80
test al, al
je 0x4c1bea
push 0
push 0x14
lea esi, [esp + 0x4c]
call fcn.004199a0
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x38]
push ecx
mov ecx, dword [esp + 0x38]
push edx
push eax
push ecx
call fcn.0044dd60
add esp, 0x18
test al, al
je 0x4c1bea
push 0x34
jmp 0x4c1b0e
mov eax, dword [ebp + 0x1bc]
mov ecx, dword [ebp + 0x1b8]
mov esi, dword [esp + 0x40]
push eax
push ecx
push esi
push edi
lea eax, [esp + 0x54]
call fcn.004276d0
mov edx, dword [eax]
mov ecx, dword [ebp + 0x1c4]
mov eax, dword [eax + 4]
push ecx
mov dword [esp + 0x40], edx
mov edx, dword [ebp + 0x1c0]
push edx
mov dword [esp + 0x48], eax
push esi
push edi
lea eax, [esp + 0x64]
call fcn.004276d0
mov ecx, dword [eax]
mov edx, dword [eax + 4]
mov eax, dword [ebp + 0x138]
mov eax, dword [eax + 0xd8]
mov dword [esp + 0x48], edx
cdq
push edx
push eax
lea esi, [esp + 0x44]
mov dword [esp + 0x4c], ecx
call fcn.004199a0
add esp, 0x28
test bl, bl
je 0x4c1d4b
test byte [ebp + 0x349], 0x28
jne 0x4c1cd3
mov esi, dword [esp + 0x20]
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x30]
mov edx, dword [esp + 0x2c]
push esi
push ebx
push ecx
push edx
call fcn.0044dd60
add esp, 0x10
test al, al
je 0x4c1cd3
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
push esi
push ebx
push eax
push ecx
call fcn.0044dd60
add esp, 0x10
test al, al
je 0x4c1cd3
mov eax, dword [ebp + 0x138]
mov ecx, dword [eax + 0x9ec]
cmp ecx, dword [eax + 0x264]
jge 0x4c1ccc
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x514]
mov eax, dword [ecx + 0xbc]
and edx, 0xffffff
cmp eax, edx
jl 0x4c1cd3
push 0x31
jmp 0x4c1aa4
mov eax, dword [ebp + 0x284]
test eax, eax
je 0x4c1d4b
mov ecx, dword [ebp + 0x288]
sub ecx, eax
sar ecx, 3
je 0x4c1d4b
cmp dword [ebp + 0x44], 0
jle 0x4c1d4b
mov eax, dword [ebp + 0x138]
add eax, 0x44
mov eax, dword [eax + 0x50]
add eax, dword [ebp + 0x2e0]
lea esi, [esp + 0x44]
cdq
push edx
push eax
call fcn.004199a0
mov edx, dword [eax + 4]
mov eax, dword [eax]
mov ecx, dword [ebp + 0x1a4]
push edx
mov edx, dword [ebp + 0x1a0]
push eax
push ecx
push edx
lea eax, [esp + 0x44]
call fcn.00419980
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x58]
push ecx
push edx
push eax
push edi
call fcn.0044dd20
add esp, 0x28
test al, al
je 0x4c1d4b
push ebp
call fcn.004c2360
mov esi, ebp
call fcn.004c4e40
mov ecx, dword [ebp + 0x138]
cmp byte [ecx + 0xcc], 0
je 0x4c1d70
mov eax, ebp
call fcn.004c0cb0
test al, al
je 0x4c1d70
mov al, 1
jmp 0x4c1d72
xor al, al
mov dl, byte [ebp + 0x34a]
xor dl, al
and dl, 1
xor byte [ebp + 0x34a], dl
lea ebx, [ebp + 0x48]
mov esi, ebx
mov edi, 0xa
lea ecx, [ecx]
mov eax, dword [esp + 0x84]
push eax
call fcn.004e3f00
add esi, 0x18
sub edi, 1
jne 0x4c1d90
mov eax, dword [ebp + 0x4c]
cmp eax, dword [ebp + 0x33c]
jle 0x4c1db6
mov dword [ebp + 0x33c], eax
mov eax, dword [ebp + 0x7c]
cmp eax, dword [ebp + 0x338]
jle 0x4c1dc7
mov dword [ebp + 0x338], eax
mov edx, dword [ebp]
mov eax, dword [edx + 4]
mov ecx, ebp
call eax
test al, al
je 0x4c1e1e
mov byte [esp + 0x78], 0
mov esi, dword [esp + 0x38]
or ebx, 0xffffffff
test esi, esi
je 0x4c2316
lea ecx, [esi + 4]
mov edx, ebx
lock xadd dword [ecx], edx
jne 0x4c2316
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
lea eax, [esi + 8]
mov ecx, ebx
lock xadd dword [eax], ecx
jne 0x4c2316
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ecx, esi
call eax
jmp 0x4c2316
mov edi, dword [esp + 0x34]
test byte [edi + 0x4f8], 4
je 0x4c222d
push ebp
call fcn.004c15c0
movzx ecx, byte [ebp + 0x347]
cmp ecx, dword [ebp + 0x13c]
jne 0x4c1ea6
mov esi, dword [edi + 0x2e8]
add esi, 0x380
call fcn.00471470
test al, al
je 0x4c1ea6
lea edx, [esp + 0x44]
push edx
mov ecx, edi
call fcn.004644a0
mov ecx, eax
push 1
lea eax, [esp + 0x50]
call fcn.0044ed00
push eax
mov byte [esp + 0x7c], 7
mov eax, dword [edi + 0x2e8]
add eax, 0x380
push eax
call fcn.004cd100
lea ecx, [esp + 0x4c]
push ecx
mov byte [esp + 0x7c], 6
call fcn.0044e810
lea eax, [esp + 0x44]
mov byte [esp + 0x78], 1
call fcn.00482950
mov ecx, dword [ebp + 0x138]
mov eax, dword [ebp + 0x38]
test eax, eax
mov edx, dword [ecx + 0x90]
mov edi, closesocket
mov dword [esp + 0x2c], edx
mov dword [esp + 0x84], edi
jle 0x4c1ee5
mov dword [esp + 0x24], eax
cmp eax, edi
lea eax, [esp + 0x84]
jg 0x4c1edc
lea eax, [esp + 0x24]
mov edi, dword [eax]
mov dword [esp + 0x84], edi
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 0x50]
test eax, eax
jle 0x4c1f15
mov esi, dword [edx + 0xbc]
cdq
idiv esi
mov dword [esp + 0x24], eax
cmp edi, eax
lea eax, [esp + 0x84]
jl 0x4c1f0c
lea eax, [esp + 0x24]
mov edi, dword [eax]
mov dword [esp + 0x84], edi
mov eax, dword [ecx + 0x900]
test eax, eax
jle 0x4c1f3d
mov ecx, dword [ecx + 0x9ec]
cdq
idiv ecx
mov dword [esp + 0x24], eax
cmp edi, eax
lea eax, [esp + 0x84]
jl 0x4c1f3b
lea eax, [esp + 0x24]
mov edi, dword [eax]
mov eax, dword [esp + 0x34]
movzx ecx, byte [eax + 0x50f]
and ecx, 0x1f
mov esi, 1
shl esi, cl
mov eax, edi
cdq
idiv esi
cmp dword [esp + 0x2c], eax
mov ecx, eax
jl 0x4c1f63
mov ecx, dword [esp + 0x2c]
mov eax, dword [ebp + 0x284]
test eax, eax
je 0x4c1fd7
mov edx, dword [ebp + 0x288]
sub edx, eax
sar edx, 3
je 0x4c1fd7
cmp dword [ebp + 0x44], 0
jle 0x4c1fd7
mov eax, dword [ebp + 0x2e0]
add eax, ecx
cdq
push edx
push eax
lea esi, [esp + 0x4c]
call fcn.004199a0
mov ecx, dword [ebp + 0x168]
mov edx, dword [esp + 0x48]
mov esi, eax
mov eax, dword [ebp + 0x16c]
push eax
mov eax, dword [esp + 0x48]
push ecx
push edx
push eax
lea eax, [esp + 0x44]
call fcn.004276d0
mov ecx, dword [esi + 4]
mov edx, dword [esi]
push ecx
mov ecx, dword [eax + 4]
push edx
mov edx, dword [eax]
push ecx
push edx
call fcn.0044dd60
add esp, 0x28
test al, al
je 0x4c1fd7
push ebp
call fcn.004c2360
mov esi, dword [esp + 0x34]
call fcn.004b7b80
test al, al
jne 0x4c2149
test byte [ebp + 0x349], 0x40
jne 0x4c2149
fld dword [esi + 0x4c8]
fstp dword [esp + 0x84]
fldz
fcomp dword [esp + 0x84]
fnstsw ax
test ah, 0x44
jnp 0x4c2149
mov eax, esi
movzx ecx, byte [eax + 0x50f]
and ecx, 0x1f
mov eax, 1
shl eax, cl
mov ecx, dword [ebx + 0x34]
lea eax, [eax + eax + 0x10000]
cdq
mov esi, eax
mov eax, dword [ebx + 0xac]
add esi, dword [ebp + 0x1c8]
mov dword [esp + 0x84], eax
mov eax, dword [ebx + 0xc4]
mov edi, edx
adc edi, dword [ebp + 0x1cc]
mov edx, dword [ebx + 0x4c]
mov ebx, dword [ebx + 0xdc]
add eax, ebx
add eax, dword [esp + 0x84]
add eax, edx
add eax, ecx
imul eax, eax, 0x16
cdq
mov ecx, eax
mov eax, dword [esp + 0x34]
add ecx, dword [ebp + 0x88]
fld dword [eax + 0x4c8]
fstp dword [esp + 0x84]
fld1
adc edx, dword [ebp + 0x8c]
fcomp dword [esp + 0x84]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x30], edx
fnstsw ax
test ah, 0x44
jnp 0x4c20cb
mov ecx, dword [esp + 0x34]
fld dword [ecx + 0x4c8]
fstp dword [esp + 0x84]
fild qword [esp + 0x2c]
fmul dword [esp + 0x84]
call fcn.00515f36
mov ecx, eax
sub ecx, dword [ebp + 0x58]
push 0
sbb edx, dword [ebp + 0x5c]
add ecx, esi
push 0xf
adc edx, edi
push edx
push ecx
call fcn.00515a70
mov ecx, dword [ebp + 0x314]
test ecx, ecx
lea edx, [ebp + 0x314]
mov dword [esp + 0x84], eax
jle 0x4c2104
cmp ecx, eax
jge 0x4c2104
mov eax, ecx
mov dword [esp + 0x84], eax
cmp eax, 0x7fffffff
mov dword [esp + 0x2c], closesocket
lea eax, [esp + 0x2c]
jg 0x4c211e
lea eax, [esp + 0x84]
mov eax, dword [eax]
mov dword [esp + 0x84], eax
cmp eax, 0xa
mov dword [esp + 0x2c], 0xa
lea eax, [esp + 0x2c]
jl 0x4c213f
lea eax, [esp + 0x84]
cmp ecx, dword [eax]
jl 0x4c2145
mov edx, eax
mov eax, dword [edx]
jmp 0x4c214f
mov eax, dword [ebp + 0x314]
cdq
push 0
push 0x3c
lea esi, [esp + 0x34]
mov dword [ebp + 0x24], edx
mov dword [ebp + 0x20], eax
call fcn.004199a0
mov edi, dword [eax]
mov esi, dword [eax + 4]
mov edx, dword [ebp + 0x1ac]
mov eax, dword [ebp + 0x1a8]
mov ecx, dword [esp + 0x48]
mov ebx, dword [esp + 0x44]
push edx
push eax
push ecx
push ebx
lea eax, [esp + 0x3c]
call fcn.004276d0
mov ecx, dword [eax]
add esp, 0x18
cmp dword [eax + 4], esi
jl 0x4c2226
jg 0x4c21a1
cmp ecx, edi
jb 0x4c2226
mov eax, dword [ebp + 0x330]
test eax, eax
jle 0x4c21ed
lea ecx, [eax + eax]
mov eax, 0x55555556
imul ecx
mov ecx, dword [ebp + 0x32c]
mov esi, edx
shr esi, 0x1f
add esi, edx
mov eax, 0x55555556
imul ecx
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov eax, edx
shr eax, 0x1f
add esi, edx
add eax, esi
mov dword [ebp + 0x330], eax
jmp 0x4c220c
mov ecx, dword [ebp + 0x32c]
mov eax, 0x88888889
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
mov dword [ebp + 0x330], ecx
mov edx, dword [esp + 0x40]
mov dword [ebp + 0x32c], 0
mov dword [ebp + 0x1a8], ebx
mov dword [ebp + 0x1ac], edx
mov ebx, ebp
call fcn.004c2910
lea eax, [esp + 0x34]
mov byte [esp + 0x78], 0
call fcn.004e0b50
lea eax, [esp + 0x80]
mov dword [esp + 0x78], 0xffffffff
call fcn.0046af90
jmp 0x4c2344
mov eax, dword [ebp + 0x324]
mov ecx, dword [ebp + 0x138]
push eax
add ecx, 0x858
call fcn.004d3de0
or ebx, 0xffffffff
cmp dword [ebp + 0x324], ebx
jl 0x4c227d
mov dword [ebp + 0x324], ebx
test byte [ebp + 0x34a], 0x10
je 0x4c2297
test edi, edi
je 0x4c2297
add dword [edi + 0xc0], ebx
and byte [ebp + 0x34a], 0xef
test byte [0x55daa8], 1
jne 0x4c22be
or dword [0x55daa8], 1
push 0x52ce60
mov dword [0x55daac], 0x52fbdc
call fcn.005150d5
add esp, 4
mov edx, dword [ebp]
mov edx, dword [edx + 0x1c]
mov eax, 0x2e
mov ecx, 0x55daac
mov dword [esp + 0x3c], eax
push 0
lea eax, [esp + 0x40]
mov dword [esp + 0x44], ecx
push eax
mov ecx, ebp
call edx
mov byte [esp + 0x78], 0
mov esi, dword [esp + 0x38]
test esi, esi
je 0x4c2316
mov ecx, ebx
lea eax, [esi + 4]
lock xadd dword [eax], ecx
jne 0x4c2316
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
mov edx, ebx
lea ecx, [esi + 8]
lock xadd dword [ecx], edx
jne 0x4c2316
mov eax, dword [esi]
mov edx, dword [eax + 8]
mov ecx, esi
call edx
mov dword [esp + 0x78], ebx
mov eax, dword [esp + 0x80]
test eax, eax
je 0x4c2344
add eax, 4
mov ecx, eax
lock xadd dword [ecx], ebx
jne 0x4c2344
test eax, eax
je 0x4c2344
lea ecx, [eax - 4]
test ecx, ecx
je 0x4c2344
mov edx, dword [ecx]
mov eax, dword [edx + 8]
push 1
call eax
mov ecx, dword [esp + 0x70]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x68
ret 8