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

Disassembly:
push 0xffffffffffffffff
push 0x5f8430
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
push ebx
push ebp
push esi
push edi
mov eax, dword [0x64c874]
xor eax, esp
push eax
lea eax, [esp + 0x70]
mov dword fs:[0], eax
mov ebp, dword [esp + 0x80]
mov eax, dword [0x65ae48]
mov ecx, dword [0x65ae4c]
mov dword [esp + 0x3c], eax
mov dword [esp + 0x40], ecx
lea eax, [esp + 0x80]
mov ecx, ebp
call fcn.00535280
lea edi, [ebp + 0x238]
lea esi, [esp + 0x34]
mov dword [esp + 0x78], 0
call fcn.0048fed0
mov byte [esp + 0x78], 1
mov edx, dword [ebp + 0x138]
cmp byte [edx + 0x1c0], 0
mov ebx, dword [esp + 0x34]
je 0x53f925
mov eax, dword [ebp + 0x38]
or eax, dword [ebp + 0x3c]
mov esi, dword [ebp + 0xf0]
mov ecx, dword [ebp + 0xa8]
mov dword [esp + 0x2c], esi
mov dword [esp + 0x18], ecx
je 0x53f7a7
mov eax, esi
cdq
sub dword [ebp + 0x30], eax
sbb dword [ebp + 0x34], edx
mov edx, dword [ebp + 0x20]
or edx, dword [ebp + 0x24]
je 0x53f7b8
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 0x53f7d6
lea ecx, [eax + 0x938]
add eax, 0x920
jmp 0x53f7e1
lea ecx, [eax + 0x908]
add eax, 0x8f0
test ebx, ebx
mov edi, dword [ebp + 0x20]
mov dword [esp + 0x24], ecx
mov ecx, dword [ebp + 0x38]
mov dword [esp + 0x1c], eax
je 0x53f8f7
test dl, dl
jne 0x53f81f
mov edx, dword [ebx + 0x50]
or edx, dword [ebx + 0x54]
je 0x53f80c
mov eax, esi
cdq
sub dword [ebx + 0x48], eax
sbb dword [ebx + 0x4c], edx
mov eax, dword [ebx + 0x38]
or eax, dword [ebx + 0x3c]
je 0x53f81f
mov eax, dword [esp + 0x18]
cdq
sub dword [ebx + 0x30], eax
sbb dword [ebx + 0x34], edx
test ecx, ecx
jle 0x53f88a
cmp esi, ecx
jl 0x53f88a
mov esi, dword [ebx + 0x2e8]
add esi, 0x380
call fcn.004f5700
test al, al
je 0x53f88a
lea ecx, [esp + 0x44]
push ecx
mov ecx, ebx
call fcn.004e7a70
mov ecx, eax
push 3
lea eax, [esp + 0x50]
call fcn.004d0f50
mov byte [esp + 0x78], 3
mov edx, dword [ebx + 0x2e8]
push eax
add edx, 0x380
push edx
call fcn.004c4090
lea eax, [esp + 0x4c]
push eax
mov byte [esp + 0x7c], 2
call fcn.004c2120
lea eax, [esp + 0x44]
mov byte [esp + 0x78], 1
call fcn.004d0760
test edi, edi
jle 0x53f8f7
cmp dword [esp + 0x18], edi
jl 0x53f8f7
mov esi, dword [ebx + 0x2e8]
add esi, 0x380
call fcn.004f5700
test al, al
je 0x53f8f7
lea ecx, [esp + 0x44]
push ecx
mov ecx, ebx
call fcn.004e7a70
mov ecx, eax
push 2
lea eax, [esp + 0x50]
call fcn.004d0f50
mov byte [esp + 0x78], 5
mov edx, dword [ebx + 0x2e8]
push eax
add edx, 0x380
push edx
call fcn.004c4090
lea eax, [esp + 0x4c]
push eax
mov byte [esp + 0x7c], 4
call fcn.004c2120
lea eax, [esp + 0x44]
mov byte [esp + 0x78], 1
call fcn.004d0760
mov ecx, dword [esp + 0x1c]
mov edx, dword [ecx + 0x10]
or edx, dword [ecx + 0x14]
je 0x53f90e
mov eax, dword [esp + 0x2c]
cdq
sub dword [ecx + 8], eax
sbb dword [ecx + 0xc], edx
mov ecx, dword [esp + 0x24]
mov eax, dword [ecx + 0x10]
or eax, dword [ecx + 0x14]
je 0x53f925
mov eax, dword [esp + 0x18]
cdq
sub dword [ecx + 8], eax
sbb dword [ecx + 0xc], edx
test ebx, ebx
je 0x5402c4
test byte [ebp + 0x34a], 8
jne 0x5402c4
test byte [ebp + 0x34b], 0x10
je 0x53f9ce
test byte [ebp + 0x349], 0x20
je 0x53f9ce
lea eax, [ebp + 0x280]
call fcn.00543420
test al, al
je 0x53f9ce
lea eax, [ebp + 0x270]
call fcn.00543420
test al, al
je 0x53f9ce
mov ecx, dword [ebp + 0x174]
mov edx, dword [ebp + 0x170]
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x3c]
push ecx
push edx
push esi
push edi
lea eax, [esp + 0x54]
call fcn.00489580
mov ecx, dword [eax + 4]
mov edx, dword [eax]
push ecx
push edx
call fcn.004895a0
add esp, 0x18
cmp eax, 5
jl 0x53f9d2
push ebp
push ebx
mov dword [ebp + 0x170], edi
mov dword [ebp + 0x174], esi
call fcn.00506bc0
add esp, 8
test byte [ebp + 0x34a], 8
jne 0x54029d
push ebp
call fcn.0053dd90
jmp 0x53f9d2
mov edi, dword [esp + 0x3c]
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 dword [esp + 0x48], eax
mov edi, edi
cmp ebx, ebx
je 0x53f9f9
call fcn.005b8b18
cmp esi, dword [esp + 0x48]
je 0x53fa21
cmp esi, dword [ebx + 4]
jne 0x53fa09
call fcn.005b8b18
mov ecx, dword [esi + 8]
mov edx, dword [ecx]
mov eax, dword [edx + 0x60]
call eax
cmp esi, dword [ebx + 4]
jne 0x53fa1d
call fcn.005b8b18
mov esi, dword [esi]
jmp 0x53f9f0
mov edx, dword [ebp]
mov eax, dword [edx + 4]
mov ecx, ebp
call eax
test al, al
je 0x53fa78
mov byte [esp + 0x78], 0
mov esi, dword [esp + 0x38]
or edi, 0xffffffff
test esi, esi
je 0x540385
lea ecx, [esi + 4]
mov edx, edi
lock xadd dword [ecx], edx
jne 0x540385
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
lea eax, [esi + 8]
mov ecx, edi
lock xadd dword [eax], ecx
jne 0x540385
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ecx, esi
call eax
jmp 0x540385
mov ecx, dword [ebp + 0x19c]
mov edx, dword [ebp + 0x198]
mov ebx, dword [esp + 0x40]
push ecx
push edx
push ebx
push edi
lea eax, [esp + 0x54]
call fcn.00489580
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.00489580
mov edx, dword [esi + 4]
add esp, 0x20
cmp edx, dword [eax + 4]
jg 0x53fac5
jl 0x53fac3
mov ecx, dword [esi]
cmp ecx, dword [eax]
jae 0x53fac5
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 0x53fb97
mov eax, dword [ebp + 0x2f4]
cdq
push edx
push eax
lea esi, [esp + 0x4c]
call fcn.00493d50
mov ecx, dword [eax]
add esp, 8
cmp edi, dword [eax + 4]
jl 0x53fb2d
jg 0x53fb01
cmp dword [esp + 0x2c], ecx
jbe 0x53fb2d
test byte [ebp + 0x34a], 0x10
jne 0x53fb97
push 0x32
lea esi, [esp + 0x48]
call fcn.004b2660
mov eax, dword [ebp]
mov edx, dword [eax + 0x1c]
push 0
mov ecx, esi
push ecx
mov ecx, ebp
call edx
jmp 0x54029d
test byte [ebp + 0x34a], 0x10
jne 0x53fb97
mov eax, dword [ebp]
mov edx, dword [eax + 0x20]
mov ecx, ebp
call edx
test al, al
je 0x53fb97
mov eax, dword [ebp + 0x138]
add eax, 0x44
mov eax, dword [eax + 0xd4]
cdq
push edx
push eax
lea esi, [esp + 0x4c]
call fcn.00493d50
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x34]
push ecx
push edx
push edi
push eax
call fcn.004d0290
add esp, 0x18
test al, al
je 0x53fb97
push 0x33
lea esi, [esp + 0x48]
call fcn.004b2660
mov edx, dword [ebp]
mov edx, dword [edx + 0x1c]
push 0
mov eax, esi
push eax
mov ecx, ebp
call edx
jmp 0x54029d
mov edx, dword [ebp + 0x184]
cmp edx, dword [ebp + 0x17c]
lea ecx, [ebp + 0x180]
lea eax, [ebp + 0x178]
ja 0x53fbb9
jb 0x53fbbb
mov edx, dword [ecx]
cmp edx, dword [eax]
jb 0x53fbbb
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.00489580
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 0x53fc56
test byte [ebp + 0x34a], 0x10
jne 0x53fc56
lea ecx, [ebp + 0x260]
call fcn.00543230
test al, al
je 0x53fc56
cmp dword [ebp + 0x308], 0
jne 0x53fc56
mov al, byte [ebp + 0x349]
test al, 0x40
jne 0x53fc56
test al, 8
je 0x53fc56
mov esi, dword [esp + 0x34]
call fcn.00535bf0
test al, al
je 0x53fc56
push 0
push 0x14
lea esi, [esp + 0x4c]
call fcn.00493d50
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.004d0290
add esp, 0x18
test al, al
je 0x53fc56
push 0x34
jmp 0x53fb7a
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.00489580
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.00489580
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.00493d50
add esp, 0x28
test bl, bl
je 0x53fdb7
test byte [ebp + 0x349], 0x28
jne 0x53fd3f
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.004d0290
add esp, 0x10
test al, al
je 0x53fd3f
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
push esi
push ebx
push eax
push ecx
call fcn.004d0290
add esp, 0x10
test al, al
je 0x53fd3f
mov eax, dword [ebp + 0x138]
mov ecx, dword [eax + 0x9ec]
cmp ecx, dword [eax + 0x264]
jge 0x53fd38
mov ecx, dword [esp + 0x34]
mov edx, dword [ecx + 0x514]
mov eax, dword [ecx + 0xbc]
and edx, 0xffffff
cmp eax, edx
jl 0x53fd3f
push 0x31
jmp 0x53fb10
mov eax, dword [ebp + 0x284]
test eax, eax
je 0x53fdb7
mov ecx, dword [ebp + 0x288]
sub ecx, eax
sar ecx, 3
je 0x53fdb7
cmp dword [ebp + 0x44], 0
jle 0x53fdb7
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.00493d50
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.00493d30
mov ecx, dword [eax + 4]
mov edx, dword [eax]
mov eax, dword [esp + 0x58]
push ecx
push edx
push eax
push edi
call fcn.004d0250
add esp, 0x28
test al, al
je 0x53fdb7
push ebp
call fcn.005403d0
mov esi, ebp
call fcn.00542ea0
mov ecx, dword [ebp + 0x138]
cmp byte [ecx + 0xcc], 0
je 0x53fddc
mov eax, ebp
call fcn.0053ece0
test al, al
je 0x53fddc
mov al, 1
jmp 0x53fdde
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 esp, [esp]
mov eax, dword [esp + 0x84]
push eax
call fcn.00566bf0
add esi, 0x18
sub edi, 1
jne 0x53fe00
mov eax, dword [ebp + 0x4c]
cmp eax, dword [ebp + 0x33c]
jle 0x53fe26
mov dword [ebp + 0x33c], eax
mov eax, dword [ebp + 0x7c]
cmp eax, dword [ebp + 0x338]
jle 0x53fe37
mov dword [ebp + 0x338], eax
mov edx, dword [ebp]
mov eax, dword [edx + 4]
mov ecx, ebp
call eax
test al, al
je 0x53fe8e
mov byte [esp + 0x78], 0
mov esi, dword [esp + 0x38]
or edi, 0xffffffff
test esi, esi
je 0x540385
lea ecx, [esi + 4]
mov edx, edi
lock xadd dword [ecx], edx
jne 0x540385
mov eax, dword [esi]
mov edx, dword [eax + 4]
mov ecx, esi
call edx
lea eax, [esi + 8]
mov ecx, edi
lock xadd dword [eax], ecx
jne 0x540385
mov edx, dword [esi]
mov eax, dword [edx + 8]
mov ecx, esi
call eax
jmp 0x540385
mov edi, dword [esp + 0x34]
test byte [edi + 0x4f8], 4
je 0x54029d
push ebp
call fcn.0053f5f0
movzx ecx, byte [ebp + 0x347]
cmp ecx, dword [ebp + 0x13c]
jne 0x53ff16
mov esi, dword [edi + 0x2e8]
add esi, 0x380
call fcn.004f5700
test al, al
je 0x53ff16
lea edx, [esp + 0x44]
push edx
mov ecx, edi
call fcn.004e7a70
mov ecx, eax
push 1
lea eax, [esp + 0x50]
call fcn.004d0f50
push eax
mov byte [esp + 0x7c], 7
mov eax, dword [edi + 0x2e8]
add eax, 0x380
push eax
call fcn.004c4090
lea ecx, [esp + 0x4c]
push ecx
mov byte [esp + 0x7c], 6
call fcn.004c2120
lea eax, [esp + 0x44]
mov byte [esp + 0x78], 1
call fcn.004d0760
mov ecx, dword [ebp + 0x138]
mov eax, dword [ebp + 0x38]
test eax, eax
mov edx, dword [ecx + 0x90]
mov edi, 0x7fffffff
mov dword [esp + 0x24], edx
mov dword [esp + 0x84], edi
jle 0x53ff55
mov dword [esp + 0x2c], eax
cmp eax, edi
lea eax, [esp + 0x84]
jg 0x53ff4c
lea eax, [esp + 0x2c]
mov edi, dword [eax]
mov dword [esp + 0x84], edi
mov edx, dword [esp + 0x34]
mov eax, dword [edx + 0x50]
test eax, eax
jle 0x53ff85
mov esi, dword [edx + 0xbc]
cdq
idiv esi
mov dword [esp + 0x2c], eax
cmp edi, eax
lea eax, [esp + 0x84]
jl 0x53ff7c
lea eax, [esp + 0x2c]
mov edi, dword [eax]
mov dword [esp + 0x84], edi
mov eax, dword [ecx + 0x900]
test eax, eax
jle 0x53ffad
mov ecx, dword [ecx + 0x9ec]
cdq
idiv ecx
mov dword [esp + 0x2c], eax
cmp edi, eax
lea eax, [esp + 0x84]
jl 0x53ffab
lea eax, [esp + 0x2c]
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 + 0x24], eax
mov ecx, eax
jl 0x53ffd3
mov ecx, dword [esp + 0x24]
mov eax, dword [ebp + 0x284]
test eax, eax
je 0x540047
mov edx, dword [ebp + 0x288]
sub edx, eax
sar edx, 3
je 0x540047
cmp dword [ebp + 0x44], 0
jle 0x540047
mov eax, dword [ebp + 0x2e0]
add eax, ecx
cdq
push edx
push eax
lea esi, [esp + 0x4c]
call fcn.00493d50
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.00489580
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.004d0290
add esp, 0x28
test al, al
je 0x540047
push ebp
call fcn.005403d0
mov esi, dword [esp + 0x34]
call fcn.00535bf0
test al, al
jne 0x5401b9
test byte [ebp + 0x349], 0x40
jne 0x5401b9
fld dword [esi + 0x4c8]
fstp dword [esp + 0x84]
fldz
fcomp dword [esp + 0x84]
fnstsw ax
test ah, 0x44
jnp 0x5401b9
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 0x54013b
mov ecx, dword [esp + 0x34]
fld dword [ecx + 0x4c8]
fstp dword [esp + 0x84]
fild qword [esp + 0x2c]
fmul dword [esp + 0x84]
call fcn.005c0516
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.005c05d0
mov ecx, dword [ebp + 0x314]
test ecx, ecx
lea edx, [ebp + 0x314]
mov dword [esp + 0x84], eax
jle 0x540174
cmp ecx, eax
jge 0x540174
mov eax, ecx
mov dword [esp + 0x84], eax
cmp eax, 0x7fffffff
mov dword [esp + 0x2c], 0x7fffffff
lea eax, [esp + 0x2c]
jg 0x54018e
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 0x5401af
lea eax, [esp + 0x84]
cmp ecx, dword [eax]
jl 0x5401b5
mov edx, eax
mov eax, dword [edx]
jmp 0x5401bf
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.00493d50
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.00489580
mov ecx, dword [eax]
add esp, 0x18
cmp dword [eax + 4], esi
jl 0x540296
jg 0x540211
cmp ecx, edi
jb 0x540296
mov eax, dword [ebp + 0x330]
test eax, eax
jle 0x54025d
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 0x54027c
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.00540990
lea eax, [esp + 0x34]
mov byte [esp + 0x78], 0
call fcn.00565750
lea eax, [esp + 0x80]
mov dword [esp + 0x78], 0xffffffff
call fcn.0051f270
jmp 0x5403b3
mov ecx, dword [ebp + 0x138]
mov edi, dword [ebp + 0x324]
add ecx, 0x858
call fcn.00549f50
or edi, 0xffffffff
cmp dword [ebp + 0x324], edi
jl 0x5402ec
mov dword [ebp + 0x324], edi
test byte [ebp + 0x34a], 0x10
je 0x540306
test ebx, ebx
je 0x540306
add dword [ebx + 0xc0], edi
and byte [ebp + 0x34a], 0xef
test byte [0x65b670], 1
jne 0x54032d
or dword [0x65b670], 1
push 0x5fbd80
mov dword [0x65b674], 0x6155fc
call fcn.005b89dc
add esp, 4
mov ecx, 0x65b674
mov eax, 0x2e
mov dword [esp + 0x40], ecx
mov dword [esp + 0x3c], eax
mov eax, dword [ebp]
mov edx, dword [eax + 0x1c]
push 0
lea ecx, [esp + 0x40]
push ecx
mov ecx, ebp
call edx
mov byte [esp + 0x78], 0
mov esi, dword [esp + 0x38]
test esi, esi
je 0x540385
lea eax, [esi + 4]
mov ecx, edi
lock xadd dword [eax], ecx
jne 0x540385
mov edx, dword [esi]
mov eax, dword [edx + 4]
mov ecx, esi
call eax
lea ecx, [esi + 8]
mov edx, edi
lock xadd dword [ecx], edx
jne 0x540385
mov eax, dword [esi]
mov edx, dword [eax + 8]
mov ecx, esi
call edx
mov dword [esp + 0x78], edi
mov eax, dword [esp + 0x80]
test eax, eax
je 0x5403b3
add eax, 4
mov ecx, eax
lock xadd dword [ecx], edi
jne 0x5403b3
test eax, eax
je 0x5403b3
lea ecx, [eax - 4]
test ecx, ecx
je 0x5403b3
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