Function at 0x541d46
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
push 0xffffffffffffffff
push 0x634ed8
mov eax, dword fs:[0]
push eax
sub esp, 0x1c8
mov eax, dword [0x652018]
xor eax, esp
mov dword [esp + 0x1c0], eax
push ebx
push esi
push edi
mov eax, dword [0x652018]
xor eax, esp
push eax
lea eax, [esp + 0x1d8]
mov dword fs:[0], eax
mov ebx, ecx
mov dword [esp + 0x20], ebx
mov eax, dword [ebp + 0x14]
mov edx, dword [ebp + 0x1c]
mov esi, dword [ebp + 8]
mov edi, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x20]
mov dword [esp + 0x30], eax
mov eax, dword [ebp + 0x28]
mov byte [esp + 0x90], al
mov eax, dword [ebp + 0x2c]
mov dword [esp + 0x40], eax
mov eax, dword [ebp + 0x30]
mov dword [esp + 0x10], esi
mov dword [esp + 0x28], edi
mov dword [esp + 0x34], edx
mov dword [esp + 0x5c], ecx
mov dword [esp + 0x38], eax
test edx, edx
je 0x541dce
mov byte [edx], 0
mov edx, dword [ebx + 0x210]
mov ecx, edi
mov dword [esp + 0x2c], 0
call fcn.004810f6
test al, al
je 0x541df1
mov dword [esp + 0x2c], 3
jmp 0x541e16
test edi, edi
je 0x541e2f
test byte [esi + 0x38], 8
je 0x541e16
mov edx, dword [ebx + 0xc]
mov ecx, edi
call fcn.00481c26
test eax, eax
je 0x541e16
cmp byte [eax], 1
jne 0x541e16
mov dword [esp + 0x2c], 2
test edi, edi
je 0x541e2f
mov edx, dword [ebx + 0x210]
mov ecx, edi
call fcn.004810f6
test al, al
je 0x541ef5
mov eax, dword [esp + 0x10]
mov esi, edi
push 0
mov ecx, ebx
lea edi, [eax + 4]
push edi
push eax
call fcn.00513df6
mov dword [esp + 0x28], eax
test eax, eax
jne 0x541ef1
test esi, esi
je 0x541ed1
mov ecx, dword [ebx + 0x210]
mov eax, dword [ecx]
push dword [eax + 0x10]
lea eax, [ecx + 0x18]
push eax
lea ecx, [esp + 0x48]
call fcn.00402cf6
mov eax, dword [esp + 0x40]
dec eax
neg eax
sbb eax, eax
not eax
and eax, dword [esp + 0x44]
cmp esi, eax
je 0x541ebd
mov ecx, dword [ebx + 0x210]
mov eax, dword [ecx]
push dword [eax + 0x10]
lea eax, [ecx + 0x2c]
push eax
lea ecx, [esp + 0x48]
call fcn.00402cf6
mov eax, dword [esp + 0x40]
dec eax
neg eax
sbb eax, eax
not eax
and eax, dword [esp + 0x44]
cmp esi, eax
je 0x541ebd
push esi
push edi
push 0x8f11
mov ecx, ebx
call fcn.00422036
push edi
jmp 0x542141
push esi
push edi
push 0x8f12
mov ecx, ebx
call fcn.00422036
push edi
jmp 0x542141
cmp byte [ebx + 0x88], 0
je 0x541eeb
push edi
push 0x781b
push dword [ebx + 0x1c]
call 0x3cd1e6
add esp, 0xc
push edi
jmp 0x542141
mov edi, dword [esp + 0x28]
mov eax, dword [esp + 0x5c]
test eax, eax
je 0x541f00
mov byte [eax], 0
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + 0xc]
mov esi, dword [eax + 0x2a8]
test edi, edi
je 0x541f2d
cmp byte [edi], 0x29
jne 0x541f2d
mov ecx, dword [edi + 0x50]
call 0x3dc936
mov ecx, eax
call 0x3c4d86
mov ecx, eax
call 0x3c4ce6
jmp 0x541f2f
mov eax, edi
push 0
push esi
mov ecx, eax
call 0x3dad56
mov ecx, eax
call 0x3da876
mov edi, dword [esp + 0x10]
mov esi, eax
mov dword [esp + 0x48], esi
mov al, byte [edi + 0x2c]
mov byte [esp + 0x17], al
test esi, esi
je 0x542123
mov ecx, esi
call 0x3dd2f6
test al, al
jne 0x542123
movzx eax, byte [esi]
test byte [eax + eax*2 + 0x405210], 0x40
je 0x542123
mov eax, dword [esp + 0x28]
xor ecx, ecx
mov edi, dword [esi + 0x54]
mov dword [esp + 0x18], edi
mov byte [esp + 0x15], 0
cmp byte [eax], 0x29
setne cl
dec ecx
and ecx, eax
mov eax, dword [esp + 0x10]
mov dword [esp + 0x60], ecx
mov esi, dword [eax + 0x24]
test edi, edi
je 0x5421ea
test esi, esi
je 0x5424e7
mov ecx, dword [edi + 0xc]
call 0x3dc936
mov ecx, eax
call fcn.00481ba6
test al, al
jne 0x5424b5
cmp byte [esp + 0x15], al
jne 0x541fdc
mov ecx, esi
call 0x3dd2f6
mov byte [esp + 0x15], 0
test al, al
je 0x541fe1
mov byte [esp + 0x15], 1
mov ecx, edi
call 0x3dd206
mov edi, dword [esp + 0x60]
lea edx, [ebx + 0x6c]
sub esp, 0x10
mov ecx, esp
mov byte [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], edi
mov dword [ecx + 0xc], 0
mov ecx, eax
call fcn.0041f386
mov edi, dword [esi + 0xc]
mov dword [esp + 0x4c], eax
test edi, edi
je 0x542028
cmp byte [edi], 3
jne 0x542028
mov ecx, edi
call 0x3dc936
mov edi, eax
test byte [esi + 0x20], 0x10
je 0x542077
mov eax, dword [esp + 0x10]
mov al, byte [eax + 0x38]
test al, 0x30
je 0x542077
mov dl, 1
mov byte [esp + 0x16], dl
test byte [esi + 1], dl
jne 0x542048
xor ecx, ecx
jmp 0x54204b
lea ecx, [esi - 0x20]
movzx eax, al
shr eax, 4
not eax
and eax, 1
or eax, 0x903e
cmp byte [ebx + 0x88], 0
je 0x542079
push ecx
push eax
push dword [ebx + 0x1c]
call 0x3cd1e6
mov dl, byte [esp + 0x22]
add esp, 0xc
jmp 0x542079
xor dl, dl
test edi, edi
je 0x54217e
test dl, dl
jne 0x5421d4
test byte [esi + 0x20], 0x10
je 0x5420a5
movzx eax, byte [edi]
sub eax, 2
jne 0x5420a5
mov ecx, dword [edi + 8]
call 0x3dc936
mov dword [esp + 0x1c], eax
jmp 0x5420a9
mov dword [esp + 0x1c], edi
mov ecx, dword [esp + 0x18]
call 0x3dd206
cmp byte [eax], 0x24
je 0x5420c1
mov eax, dword [esp + 0x18]
test byte [eax + 0x20], 0x10
je 0x5420e9
mov edx, dword [ebx + 0x10]
mov ecx, dword [esp + 0x1c]
call fcn.004250b6
test al, al
jne 0x54240f
mov edx, dword [ebx + 0x10]
mov ecx, dword [esp + 0x1c]
call fcn.00424f16
test al, al
jne 0x54240f
cmp byte [esp + 0x17], 0
jne 0x5421d4
cmp byte [ebp + 0x18], 0
jne 0x5421d4
mov ecx, dword [esi + 0xc]
call 0x3dc936
mov edx, dword [esp + 0x4c]
mov ecx, eax
push 0
push 0
push 0
call fcn.00482836
test al, al
jne 0x5421d4
mov edi, dword [esp + 0x10]
mov al, byte [edi + 0x38]
lea esi, [edi + 4]
shr al, 3
mov ecx, ebx
push 0
and al, 1
movzx eax, al
push eax
push esi
push dword [esp + 0x34]
call fcn.00544c46
push esi
push 0
push 0
push 0x65e308
push 0x2c
mov ecx, ebx
call fcn.004731c6
or word [eax + 2], 1
mov ecx, dword [esp + 0x1d8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [esp + 0x1c0]
xor ecx, esp
call 0x59f1a7
mov esp, ebp
pop ebp
ret 0x2c
test byte [esi + 0x20], 0x10
je 0x5421a0
mov eax, dword [esp + 0x4c]
cmp byte [eax], 2
jne 0x542192
mov dword [esi + 0xc], eax
jmp 0x5421b9
push eax
lea ecx, [ebx + 0x6c]
call fcn.004165e6
mov dword [esi + 0xc], eax
jmp 0x5421b9
mov ecx, dword [esp + 0x4c]
movzx eax, byte [ecx]
sub eax, 2
jne 0x5421b6
mov ecx, dword [ecx + 8]
call 0x3dc936
mov ecx, eax
mov dword [esi + 0xc], ecx
mov ecx, dword [esp + 0x28]
call 0x3da3f6
test al, al
je 0x5421d4
test byte [esi + 0x24], 1
jne 0x5421d4
push esi
mov ecx, ebx
call fcn.00544d86
mov edi, dword [esp + 0x18]
mov esi, dword [esi + 4]
mov edi, dword [edi + 4]
mov dword [esp + 0x18], edi
test edi, edi
jne 0x541fa7
test esi, esi
je 0x54220d
mov edi, dword [esp + 0x10]
cmp dword [edi + 0x24], 0
jne 0x542123
cmp byte [esp + 0x17], 0
jne 0x54220d
cmp byte [ebp + 0x18], 0
je 0x542123
mov ecx, dword [esp + 0x48]
mov ecx, dword [ecx + 0x50]
call 0x3dc936
mov esi, dword [esp + 0x60]
lea edx, [ebx + 0x6c]
sub esp, 0x10
mov ecx, esp
mov byte [ecx], 0
mov dword [ecx + 4], 0
mov dword [ecx + 8], esi
mov dword [ecx + 0xc], 0
mov ecx, eax
call fcn.0041f386
mov edi, eax
lea ecx, [esp + 0x80]
lea eax, [ebx + 0x148]
mov dword [esp + 0x18], edi
push eax
call fcn.00477606
mov dword [esp + 0x1e0], 1
xor esi, esi
mov ecx, dword [esp + 0x10]
mov al, byte [ecx + 0x38]
mov dl, al
shr dl, 1
and dl, 1
je 0x5424f4
test al, 8
je 0x5424f4
mov ecx, dword [ecx + 0x28]
cmp dword [ecx + 0x64], esi
je 0x5424f4
push esi
push esi
lea eax, [esp + 0x2e]
push eax
push dword [ecx + 0x64]
mov ecx, ebx
call 0x3fec76
mov esi, eax
test esi, esi
jne 0x5422aa
mov esi, 0x65e308
lea eax, [esp + 0x27]
mov byte [esp + 0x27], 0
push eax
push dword [esp + 0x94]
mov ecx, ebx
push dword [esp + 0x38]
push esi
push dword [esp + 0x20]
call fcn.00543a26
mov ecx, dword [esp + 0x10]
mov edi, eax
mov dword [esp + 0x1c], edi
mov al, byte [ecx + 0x38]
test al, 2
je 0x542311
test al, 8
je 0x542311
mov eax, dword [ecx + 0x28]
cmp dword [eax + 0x64], 0
je 0x542311
lea eax, [esp + 0x4c]
mov dword [esp + 0x4c], 0
push eax
push dword [esp + 0x1c]
mov ecx, ebx
push esi
call fcn.0048cf46
mov ecx, dword [esp + 0x4c]
call fcn.0048d2c6
mov edx, dword [esp + 0x30]
mov dword [edx], eax
cmp byte [esp + 0x8c], 0
mov si, word [esp + 0x84]
jne 0x542339
mov eax, dword [esp + 0x88]
test eax, eax
je 0x542331
mov word [eax], si
mov byte [esp + 0x8c], 1
cmp byte [esp + 0x15], 0
je 0x542345
or word [edi + 2], 1
test byte [edi + 2], 1
jne 0x542669
cmp byte [esp + 0x17], 0
je 0x542669
cmp dword [esp + 0x18], 0
jne 0x542669
mov al, byte [edi + 0x38]
test al, 2
jne 0x542669
mov ecx, dword [edi + 0x5c]
cmp word [ecx], 0x6d
jne 0x542669
test al, 4
je 0x542392
mov ecx, dword [ecx + 0x1c]
call 0x3db1f6
cmp eax, 1
jne 0x542669
lea eax, [ebx + 0x8c]
push eax
lea ecx, [esp + 0x68]
call 0x3cfd66
mov byte [esp + 0x1e0], 2
add ebx, 0xa0
push ebx
lea ecx, [esp + 0x50]
call 0x3cfd66
mov byte [esp + 0x1e0], 3
lea ecx, [esp + 0x94]
mov edi, dword [esp + 0x20]
add edi, 0x1d0
push edi
call 0x3cfd66
mov byte [esp + 0x1e0], 4
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x20]
mov eax, dword [edx + 0x58]
mov dword [ecx + 0x8c], eax
mov eax, dword [edx + 0x28]
mov dword [ebx], eax
mov dword [edi], 1
test byte [edx + 0x38], 2
jne 0x5425e5
mov ecx, dword [edx + 0x5c]
jmp 0x5425e7
push ecx
lea ecx, [esp + 0xa8]
call fcn.004153a6
mov dword [esp + 0x1e0], 0
mov ecx, dword [esi + 0xc]
call 0x3dcb56
mov dword [esp + 0x40], eax
test eax, eax
je 0x542442
mov ecx, eax
call 0x3d1786
test al, al
je 0x542451
test byte [esi + 1], 1
jne 0x54244c
xor esi, esi
jmp 0x542455
add esi, 0xffffffe0
jmp 0x542455
mov esi, dword [esp + 0x40]
mov ecx, dword [ebx + 0x1c]
test ecx, ecx
je 0x542476
push 0
push 0
push 0
push 0
lea eax, [esp + 0xb4]
push eax
push 0
push edi
call 0x3cd776
jmp 0x542478
xor eax, eax
push eax
push esi
push 0x7aa4
mov ecx, ebx
call fcn.00422146
mov eax, dword [esp + 0x10]
mov ecx, ebx
add eax, 4
push eax
call fcn.00473366
mov esi, eax
mov dword [esp + 0x1e0], 0xffffffff
lea ecx, [esp + 0xa4]
call 0x3cc326
mov eax, esi
jmp 0x542158
mov ecx, dword [edi + 0xc]
call 0x3dc936
cmp byte [ebx + 0x88], 0
je 0x5424da
push dword [ebx + 0x1c]
mov edx, dword [esp + 0x14]
mov ecx, eax
push dword [ebx + 0xc]
lea edx, [edx + 4]
call fcn.00421b36
mov eax, dword [esp + 0x10]
add eax, 4
push eax
jmp 0x542141
test edi, edi
jne 0x5421ee
jmp 0x54220d
test dl, dl
je 0x5425a1
test al, 8
je 0x5425a1
cmp byte [ebp + 0x24], 0
je 0x542586
test edi, edi
je 0x542586
cmp byte [edi], 1
je 0x542586
test al, 0x10
je 0x5425a1
mov ecx, dword [ebx + 0x210]
mov eax, dword [ecx]
push dword [eax + 0x10]
lea eax, [ecx + 0x630]
push eax
lea ecx, [esp + 0x54]
call fcn.00402cf6
cmp dword [esp + 0x4c], 1
jne 0x5425a1
mov ecx, dword [esp + 0x50]
call 0x3da5b6
cmp eax, 6
jne 0x5425a1
mov ecx, dword [ebx + 0x210]
mov eax, dword [ecx]
push dword [eax + 0x10]
lea eax, [ecx + 0x630]
push eax
lea ecx, [esp + 0x54]
call fcn.00402cf6
mov edx, dword [esp + 0x4c]
mov ecx, edi
dec edx
neg edx
push 0
sbb edx, edx
not edx
and edx, dword [esp + 0x54]
push 0
push 0
call fcn.00482836
test al, al
je 0x5425a1
push dword [esp + 0x10]
mov ecx, ebx
call fcn.00513496
mov esi, eax
mov word [ebx + 0x148], 1
jmp 0x5422a1
cmp byte [ebp + 0x24], 0
mov eax, dword [esp + 0x10]
je 0x5425bc
test byte [eax + 0x38], 8
je 0x5422a5
mov esi, edi
jmp 0x5422aa
test byte [eax + 0x38], 8
je 0x5422a5
test edi, edi
je 0x5422a5
mov ecx, dword [eax + 0x34]
xor eax, eax
and ecx, 8
or eax, ecx
jne 0x5422aa
mov esi, edi
jmp 0x5422aa
xor ecx, ecx
mov ebx, dword [esp + 0x20]
lea eax, [edx + 4]
push 0
push eax
push ecx
mov ecx, ebx
call fcn.00513df6
lea ecx, [esp + 0x64]
mov edi, eax
call 0x3cfdb6
lea ecx, [esp + 0x4c]
call 0x3cfdb6
lea ecx, [esp + 0x94]
call 0x3cfdb6
push 0
push 0
push dword [esp + 0x38]
mov ecx, ebx
push edi
push dword [esp + 0x20]
call fcn.00543a26
mov edi, eax
mov dword [esp + 0x1c], eax
mov byte [esp + 0x1e0], 3
lea ecx, [esp + 0x94]
call 0x3cfd96
mov byte [esp + 0x1e0], 2
lea ecx, [esp + 0x4c]
call 0x3cfd96
mov byte [esp + 0x1e0], 1
lea ecx, [esp + 0x64]
call 0x3cfd96
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov eax, dword [edx]
cmp eax, ecx
jg 0x542679
mov eax, ecx
push edi
mov ecx, ebx
mov dword [edx], eax
call fcn.00546696
mov dl, byte [edi + 0x38]
mov eax, dword [edi + 0x5c]
mov cl, dl
shr cl, 1
mov dword [esp + 0x4c], eax
and cl, 1
je 0x5426a3
mov ebx, dword [eax + 0x74]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x20]
jmp 0x5426bd
test dl, 4
je 0x5426b5
mov ebx, dword [eax + 0x1c]
mov dword [esp + 0x2c], ebx
mov ebx, dword [esp + 0x20]
jmp 0x5426bd
mov dword [esp + 0x2c], 0x65e308
test byte [edi + 2], 1
jne 0x542d54
test cl, cl
je 0x5426d0
mov eax, dword [eax + 0x74]
jmp 0x5426df
test dl, 4
je 0x5426da
mov eax, dword [eax + 0x1c]
jmp 0x5426df
mov eax, 0x65e308
mov ecx, eax
mov dword [esp + 0x20], eax
call fcn.00481ba6
test al, al
jne 0x5427c3
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x50]
call 0x3dc936
test eax, eax
je 0x5427c3
mov eax, dword [esp + 0x48]
mov ecx, dword [eax + 0x50]
call 0x3dc936
cmp byte [eax], 0x24
jne 0x5427c3
mov edx, dword [ebx + 0x10]
mov ecx, dword [esp + 0x20]
call fcn.004250b6
test al, al
jne 0x54273f
mov edx, dword [ebx + 0x10]
mov ecx, dword [esp + 0x20]
call fcn.00424f16
test al, al
je 0x5427c3
push ecx
lea ecx, [esp + 0xa8]
call fcn.004153a6
mov byte [esp + 0x1e0], 5
mov ecx, dword [ebx + 0x1c]
test ecx, ecx
je 0x542799
mov eax, dword [esp + 0x10]
test byte [eax + 0x38], 2
mov edi, dword [eax + 0x28]
je 0x54276d
add edi, 4
jmp 0x542770
add edi, 0xc
push 0
push 0
push 0
push 0
lea eax, [esp + 0xb4]
push eax
push 0
push dword [esp + 0x38]
call 0x3cd776
push eax
push edi
push 0x7aa4
mov ecx, ebx
call fcn.00422146
mov eax, dword [esp + 0x10]
mov ecx, ebx
add eax, 4
push eax
call fcn.00473366
mov edi, eax
mov byte [esp + 0x1e0], 1
lea ecx, [esp + 0xa4]
call 0x3cc326
jmp 0x542d6a
mov cl, byte [edi + 0x38]
mov eax, dword [esp + 0x18]
test cl, 4
jne 0x5427ff
test eax, eax
je 0x5427ff
cmp byte [eax], 1
je 0x5427ff
mov eax, dword [esp + 0x40]
test eax, eax
je 0x5427e3
or dword [eax], 2
mov dword [esp + 0x1e0], 0xffffffff
lea ecx, [esp + 0x80]
call fcn.00477676
jmp 0x54211f
cmp byte [ebp + 0x10], 0
je 0x5429f6
test eax, eax
je 0x542986
test cl, 2
jne 0x542986
mov ecx, eax
call fcn.00481ba6
test al, al
je 0x542847
mov edi, dword [esp + 0x10]
mov ecx, ebx
add edi, 4
push edi
push dword [esp + 0x1c]
call fcn.00421b06
push edi
mov ecx, ebx
call fcn.00473366
mov edi, eax
jmp 0x542d6a
mov cl, byte [edi + 0x38]
mov eax, dword [esp + 0x18]
test cl, 4
jne 0x542858
cmp byte [eax], 1
jne 0x5427e3
test cl, 1
je 0x54287b
mov ecx, dword [esp + 0x2c]
mov edx, eax
push 0
push 0
push 0
call fcn.00482836
test al, al
jne 0x542986
jmp 0x5427e3
lea edi, [ebx + 0x8c]
push edi
lea ecx, [esp + 0x98]
call 0x3cfd66
mov byte [esp + 0x1e0], 6
lea ecx, [esp + 0x64]
mov eax, dword [esp + 0x1c]
mov eax, dword [eax + 0x58]
mov dword [edi], eax
lea edi, [ebx + 0xa0]
push edi
call 0x3cfd66
mov byte [esp + 0x1e0], 7
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x15], 0
mov byte [esp + 0x16], 0
mov dword [esp + 0x2c], 0
mov eax, dword [eax + 0x28]
mov dword [edi], eax
mov edi, dword [esp + 0x1c]
mov byte [esp + 0x26], 0
test byte [edi + 0x38], 2
jne 0x5428e6
mov eax, dword [edi + 0x5c]
jmp 0x5428e8
xor eax, eax
push 0
push 0
lea ecx, [esp + 0x2e]
push ecx
lea ecx, [esp + 0x38]
push ecx
push 0
lea ecx, [esp + 0x2a]
push ecx
lea ecx, [esp + 0x2d]
push ecx
push 0
push 0
push 0
push dword [esp + 0x40]
mov ecx, ebx
push eax
call fcn.0046d6e6
mov edx, eax
mov eax, dword [esp + 0x34]
test eax, eax
je 0x542924
mov cl, byte [esp + 0x15]
mov byte [eax], cl
mov ecx, dword [esp + 0x5c]
test ecx, ecx
je 0x542932
mov al, byte [esp + 0x16]
mov byte [ecx], al
test byte [edx + 2], 1
je 0x542947
push edx
mov ecx, edi
call fcn.00546856
or word [edi + 2], 1
jmp 0x542959
push 0
push edx
mov ecx, ebx
call fcn.0046ad56
push eax
mov ecx, edi
call fcn.00546856
push edi
mov ecx, ebx
call fcn.00546696
mov byte [esp + 0x1e0], 6
lea ecx, [esp + 0x64]
call 0x3cfd96
mov byte [esp + 0x1e0], 1
lea ecx, [esp + 0x94]
call 0x3cfd96
test byte [edi + 2], 1
mov ecx, dword [esp + 0x10]
jne 0x5429fa
mov al, byte [ecx + 0x38]
test al, 2
jne 0x5429fa
test al, 8
je 0x5429b2
push 0
push 0x10
push dword [ecx + 0x34]
push dword [ecx + 0x30]
call fcn.00401276
test al, al
jne 0x5429ba
mov ecx, dword [esp + 0x10]
mov eax, dword [ecx + 0x28]
cmp dword [eax], 0x2c
jne 0x5429fa
test byte [edi + 0x38], 2
jne 0x5429c5
mov ecx, dword [edi + 0x5c]
jmp 0x5429c7
xor ecx, ecx
mov ecx, dword [ecx + 0x1c]
call 0x3db1f6
cmp eax, 1
jne 0x5429f6
test byte [edi + 0x38], 2
jne 0x5429df
mov eax, dword [edi + 0x5c]
jmp 0x5429e1
xor eax, eax
add eax, 4
mov ecx, ebx
push eax
push 0x771b
call fcn.00421dc6
or word [edi + 2], 1
mov ecx, dword [esp + 0x10]
cmp byte [esp + 0x27], 0
je 0x542a59
test byte [edi + 2], 1
jne 0x542a59
lea eax, [esp + 0x64]
push eax
call fcn.00541ae6
cmp byte [ebx + 0x88], 0
mov ecx, dword [eax]
mov dword [esp + 0x94], ecx
mov ecx, dword [eax + 4]
mov dword [esp + 0x98], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x9c], ecx
mov eax, dword [eax + 0xc]
mov dword [esp + 0xa0], eax
je 0x542a59
lea eax, [esp + 0x94]
push eax
push 0xa574
push dword [ebx + 0x1c]
call 0x3cd1e6
add esp, 0xc
cmp dword [esp + 0x38], 0
je 0x542aac
mov eax, dword [esp + 0x10]
test byte [eax + 0x38], 0x10
je 0x542a7b
test byte [edi + 2], 1
jne 0x542a7b
test byte [edi + 0x38], 4
mov byte [esp + 0x16], 1
jne 0x542a80
mov byte [esp + 0x16], 0
mov edx, dword [ebx + 0xc]
mov ecx, dword [esp + 0x28]
call fcn.00481c26
cmp byte [eax], 1
sete al
cmp byte [esp + 0x16], 0
je 0x542aa4
test al, al
je 0x542aa4
mov eax, 1
jmp 0x542aa6
xor eax, eax
mov ecx, dword [esp + 0x38]
mov byte [ecx], al
cmp byte [esp + 0x17], 0
je 0x542d46
test byte [edi + 2], 1
jne 0x542d46
mov al, byte [edi + 0x38]
test al, 4
je 0x542adf
test al, 2
je 0x542ad4
mov eax, dword [edi + 0x5c]
mov edx, dword [eax + 0x74]
jmp 0x542b09
mov ecx, edi
call fcn.005468d6
mov edx, eax
jmp 0x542b09
mov ecx, dword [ebx + 0x210]
mov eax, dword [ecx]
push dword [eax + 0x10]
lea eax, [ecx + 0xf4]
push eax
lea ecx, [esp + 0x40]
call fcn.00402cf6
mov edx, dword [esp + 0x38]
dec edx
neg edx
sbb edx, edx
not edx
and edx, dword [esp + 0x3c]
mov al, byte [edi + 0x38]
test al, 4
je 0x542b19
mov byte [esp + 0x38], 0
test al, 2
jne 0x542b1e
mov byte [esp + 0x38], 1
sub esp, 0x10
mov byte [esp + 0x74], 0
mov eax, dword [esp + 0x74]
mov ecx, esp
mov dword [ecx], eax
lea eax, [ebx + 0x6c]
push eax
push dword [esp + 0x4c]
mov eax, dword [esp + 0x28]
push dword [esp + 0x78]
mov dword [ecx + 4], 0
push dword [esp + 0x64]
mov dword [ecx + 8], 0
push 0
push dword [eax + 0x24]
mov dword [ecx + 0xc], 0
mov ecx, ebx
push edx
call fcn.0048cbc6
mov ecx, eax
mov eax, dword [esp + 0x30]
mov dword [esp + 0x5c], ecx
mov eax, dword [eax]
mov dword [esp + 0x38], eax
call fcn.0048d2c6
cmp eax, dword [esp + 0x38]
jle 0x542b86
call fcn.0048d2c6
jmp 0x542b8a
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x30]
mov dword [edx], eax
xor edx, edx
mov eax, dword [esp + 0x34]
test eax, eax
je 0x542ba0
cmp byte [eax], dl
jne 0x542ba0
mov edx, eax
mov eax, dword [ebx + 0x7c]
push 0
push edx
lea edx, [esp + 0x3c]
mov eax, dword [eax + 0xb0]
shr eax, 5
push edx
and al, 1
mov edx, ecx
mov cl, al
call fcn.0048d256
test al, al
jne 0x542bf5
mov eax, dword [esp + 0x10]
mov ecx, ebx
push dword [esp + 0x34]
lea edi, [eax + 4]
mov al, byte [eax + 0x38]
shr al, 3
and al, 1
movzx eax, al
push eax
push edi
push dword [esp + 0x34]
call fcn.00544c46
push edi
mov ecx, ebx
call fcn.00473366
mov edi, eax
jmp 0x542d6a
mov eax, dword [esp + 0x5c]
test al, 0xed
jne 0x542c08
test eax, 0x100
je 0x542d46
mov ecx, dword [esp + 0x10]
mov eax, dword [ebx + 0x14]
add ecx, 4
mov dword [esp + 0x64], eax
push ecx
push dword [esp + 0x64]
mov eax, dword [ecx]
push dword [esp + 0x50]
mov dword [esp + 0x74], eax
mov eax, dword [ecx + 4]
mov dword [esp + 0x78], eax
mov eax, dword [ecx + 8]
mov dword [esp + 0x7c], eax
mov eax, dword [ecx + 0xc]
mov ecx, ebx
mov dword [esp + 0x80], eax
call fcn.004618a6
mov ecx, dword [esp + 0x10]
add ecx, 4
mov dword [esp + 0x34], eax
push ecx
push 0
push dword [edi + 0x24]
mov ecx, ebx
push eax
call fcn.00461a46
test byte [edi + 0x38], 2
mov ecx, edi
push dword [esp + 0x4c]
mov dword [esp + 0x44], eax
je 0x542c74
call fcn.005468f6
jmp 0x542c79
call fcn.00546856
push edi
mov ecx, ebx
call fcn.00546696
push edi
lea ecx, [esp + 0x68]
call fcn.004e2fa6
lea ecx, [esp + 0x68]
push ecx
push dword [esp + 0x44]
lea ecx, [esp + 0x6c]
push eax
call fcn.004e40e6
push 0x50
lea ecx, [ebx + 0x24]
mov edi, eax
call fcn.0053ac56
mov edx, eax
mov eax, 0x6d
push 0
push 0
push dword [esp + 0x98]
mov word [edx], ax
mov eax, dword [esp + 0x1c]
push 0
push 0
push 0
mov ecx, dword [eax + 4]
mov dword [edx + 4], ecx
mov ecx, dword [eax + 8]
mov dword [edx + 8], ecx
mov ecx, dword [eax + 0xc]
mov dword [edx + 0xc], ecx
mov eax, dword [eax + 0x10]
mov dword [edx + 0x10], eax
mov eax, dword [esp + 0x4c]
mov dword [edx + 0x24], eax
mov eax, dword [esp + 0x34]
mov dword [edx + 0x28], edi
mov edi, dword [esp + 0x40]
mov dword [edx + 0x1c], edi
mov dword [edx + 0x14], 0x12
mov dword [edx + 0x30], 0x80000000
mov dword [edx + 0x34], 0
mov byte [edx + 0x2c], 1
mov cl, byte [eax + 0x38]
mov al, byte [edx + 0x38]
and cl, 4
or cl, 2
and al, 0xf5
add cl, cl
or cl, al
lea eax, [esp + 0x50]
push 0
push eax
push 1
mov byte [edx + 0x38], cl
mov ecx, ebx
push edi
push edx
mov dword [esp + 0x64], 0
call fcn.00541d46
mov edi, eax
or byte [edi + 0x38], 0x20
jmp 0x542d6a
mov eax, dword [esp + 0x28]
mov dword [edi + 0x1c], eax
mov dword [edi + 0x14], 0x12
mov al, byte [edi + 0x38]
test al, 8
je 0x542d6a
test al, 4
jne 0x542d6a
mov eax, dword [esp + 0x40]
test eax, eax
je 0x542d6a
or dword [eax], 1
mov dword [esp + 0x1e0], 0xffffffff
cmp byte [esp + 0x8c], 0
mov dword [esp + 0x80], 0x4264fc
jne 0x542da0
mov eax, dword [esp + 0x88]
test eax, eax
je 0x542d98
mov word [eax], si
mov byte [esp + 0x8c], 1
mov eax, edi
jmp 0x542158