Function at 0x45cd40
Capabilities:
Check os version

Disassembly:
push 0xffffffffffffffff
push 0x4a930c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x88
push ebx
push ebp
mov ebx, ecx
push esi
push edi
mov dword [esp + 0x24], ebx
xor esi, esi
lea ecx, [esp + 0x20]
push esi
mov dword [esp + 0xa4], esi
call fcn.00475930
push esi
lea ecx, [esp + 0x1c]
mov byte [esp + 0xa4], 1
call fcn.00475930
push esi
lea ecx, [esp + 0x5c]
mov byte [esp + 0xa4], 2
call fcn.00475930
push esi
lea ecx, [esp + 0x44]
mov byte [esp + 0xa4], 3
call fcn.00475930
push esi
lea ecx, [esp + 0x40]
mov byte [esp + 0xa4], 4
call fcn.00475930
lea ecx, [esp + 0x44]
mov byte [esp + 0xa0], 5
mov dword [esp + 0x14], esi
call fcn.0047a3a0
mov al, byte [esp + 0x2b]
mov edi, 0x4c4510
mov byte [esp + 0x2c], al
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov byte [esp + 0xa4], 6
mov ebp, ecx
lea ecx, [esp + 0x30]
push ebp
mov dword [esp + 0x38], esi
mov dword [esp + 0x3c], esi
mov dword [esp + 0x40], esi
call fcn.0041c2e0
test al, al
je 0x45ce39
mov edi, dword [esp + 0x30]
mov ecx, ebp
mov edx, ecx
mov esi, 0x4c4510
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [esp + 0x30]
mov dword [esp + 0x34], ebp
xor esi, esi
mov byte [eax + ebp], 0
push 5
lea ecx, [esp + 0xac]
mov byte [esp + 0xa4], 7
call fcn.0041b6f0
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push eax
call fcn.00475910
lea ecx, [esp + 0x44]
call fcn.00475ae0
push 6
lea ecx, [esp + 0xac]
call fcn.0041b6f0
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push eax
call fcn.00475910
lea ecx, [esp + 0x40]
call fcn.00475ae0
mov ebp, 1
lea ecx, [esp + 0xa8]
push ebp
call fcn.0041b6f0
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push eax
call fcn.00475910
lea ecx, [esp + 0x24]
call fcn.00475ae0
push 8
lea ecx, [esp + 0xac]
call fcn.0041b6f0
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push eax
call fcn.00475910
lea ecx, [esp + 0x5c]
call fcn.00475ae0
lea edi, [ebx + 0x1c]
push 7
mov ecx, edi
mov dword [esp + 0x60], edi
call fcn.00475c70
inc al
mov ecx, edi
push eax
push 7
call fcn.00475c80
push esi
lea ecx, [esp + 0x5c]
call fcn.00475c70
mov byte [esp + 0x10], al
mov ecx, dword [esp + 0x10]
and ecx, 0xff
dec ecx
cmp ecx, 0x22
ja case.0x45cf1b.12
xor edx, edx
mov dl, byte [ecx + 0x45ddec]
jmp dword [edx*4 + 0x45ddbc]
cmp al, 1
mov dword [esp + 0x14], esi
jne 0x45cf3f
push ecx
mov ecx, esp
mov dword [esp + 0x14], esp
push esi
call fcn.00475930
lea ecx, [ebx + 0x20]
call fcn.00475ae0
xor esi, esi
mov al, byte [esp + 0x2b]
sub esp, 0x10
mov ebp, esp
mov edi, 0x4bcbd8
or ecx, 0xffffffff
mov dword [esp + 0x20], esp
mov byte [ebp], al
xor eax, eax
mov dword [ebp + 4], esi
mov dword [ebp + 8], esi
mov dword [ebp + 0xc], esi
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
mov ecx, ebp
push ebx
call fcn.0041c2e0
test al, al
je 0x45cf9e
mov edi, dword [ebp + 4]
mov ecx, ebx
mov edx, ecx
mov esi, 0x4bcbd8
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp + 4]
mov dword [ebp + 8], ebx
add ebx, eax
xor esi, esi
mov byte [ebx], 0
sub esp, 0x10
lea eax, [esp + 0x4b]
mov ecx, esp
mov dword [esp + 0x98], esp
push eax
push str._999
mov byte [esp + 0xc8], 8
call fcn.0041b350
sub esp, 0x10
lea edx, [esp + 0x96]
mov ecx, esp
mov dword [esp + 0xb0], esp
push edx
push 0x4bcb9c
mov byte [esp + 0xd8], 9
call fcn.0041b350
sub esp, 0x10
lea eax, [esp + 0xa7]
mov ecx, esp
mov dword [esp + 0xbc], esp
push eax
push 0x4c4510
mov byte [esp + 0xe8], 0xa
call fcn.0041b350
mov edx, dword [esp + 0x64]
sub esp, 0x10
mov edi, esp
mov dword [esp + 0xb0], esp
push ecx
lea eax, [edx + 0x18]
mov ecx, esp
mov dword [esp + 0x70], esp
push eax
mov byte [esp + 0xf8], 0xb
call fcn.00475910
push edi
call fcn.00477540
add esp, 8
push 9
lea ecx, [esp + 0xfc]
mov byte [esp + 0xf4], 0xc
call fcn.0041b6f0
sub esp, 0x10
mov edi, esp
mov dword [esp + 0x7c], esp
push ecx
mov ecx, esp
mov dword [esp + 0x80], esp
push eax
call fcn.00475910
push edi
call fcn.00477540
add esp, 8
lea eax, [esp + 0xe4]
mov ecx, 0x4c45b8
mov byte [esp + 0x100], 7
push eax
call fcn.0047ac60
mov cx, word [eax]
mov ebx, dword [0x4ad134]
lea edi, [eax + 4]
mov word [esp + 0x44], cx
mov byte [esp + 0xa0], 0xd
mov eax, dword [edi + 8]
mov ebp, eax
cmp ebx, ebp
jae 0x45d0b4
mov ebp, ebx
lea edx, [esp + 0x48]
cmp edx, edi
jne 0x45d125
cmp dword [esp + 0x50], ebp
jae 0x45d0c7
call fcn.00498367
lea ecx, [esp + 0x48]
call fcn.0041c780
mov eax, dword [esp + 0x50]
sub eax, ebp
cmp eax, ebx
jae 0x45d0dc
mov ebx, eax
cmp ebx, esi
jbe 0x45d115
mov ecx, dword [esp + 0x4c]
sub eax, ebx
add ebp, ecx
push eax
lea ecx, [ebx + ebp]
push ecx
push ebp
call fcn.00498880
mov edi, dword [esp + 0x5c]
add esp, 0xc
sub edi, ebx
lea ecx, [esp + 0x48]
push esi
push edi
call fcn.0041c2e0
test al, al
je 0x45d115
push edi
lea ecx, [esp + 0x4c]
call fcn.0041c2c0
push esi
push esi
lea ecx, [esp + 0x50]
call fcn.0041c1a0
jmp 0x45d1b0
cmp ebp, esi
jbe 0x45d172
cmp ebp, eax
jne 0x45d172
mov eax, dword [edi + 4]
cmp eax, esi
jne 0x45d139
mov eax, 0x4ad138
cmp byte [eax - 1], 0xfe
jae 0x45d172
push 1
lea ecx, [esp + 0x4c]
call fcn.0041ba60
mov eax, dword [edi + 4]
cmp eax, esi
jne 0x45d156
mov eax, 0x4ad138
mov dword [esp + 0x4c], eax
mov ecx, dword [edi + 8]
mov dword [esp + 0x50], ecx
mov edi, dword [edi + 0xc]
mov dword [esp + 0x54], edi
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x45d1b0
push 1
push ebp
lea ecx, [esp + 0x50]
call fcn.0041c2e0
test al, al
je 0x45d1b0
mov edi, dword [edi + 4]
cmp edi, esi
mov esi, 0x4ad138
je 0x45d190
mov esi, edi
mov edi, dword [esp + 0x4c]
mov ecx, ebp
mov edx, ecx
push ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x4c]
call fcn.0041c2c0
xor esi, esi
mov ecx, dword [esp + 0x8c]
mov byte [esp + 0xa0], 7
cmp ecx, esi
je 0x45d1de
mov al, byte [ecx - 1]
dec ecx
test al, al
je 0x45d1d5
cmp al, 0xff
je 0x45d1d5
dec al
mov byte [ecx], al
jmp 0x45d1de
push ecx
call fcn.00498130
add esp, 4
lea ecx, [esp + 0x44]
mov dword [esp + 0x8c], esi
mov dword [esp + 0x90], esi
mov dword [esp + 0x94], esi
call fcn.00483340
cmp ax, 2
je 0x45d412
lea eax, [esp + 0x68]
lea ecx, [esp + 0x44]
push eax
call fcn.0047a5f0
mov edi, eax
mov eax, dword [edi + 8]
mov ebp, dword [0x4ad134]
mov ebx, eax
mov byte [esp + 0xa0], 0xe
cmp ebp, ebx
jae 0x45d22f
mov ebx, ebp
lea ecx, [esp + 0x2c]
cmp ecx, edi
jne 0x45d2a1
cmp dword [esp + 0x34], ebx
jae 0x45d242
call fcn.00498367
lea ecx, [esp + 0x2c]
call fcn.0041c780
mov eax, dword [esp + 0x34]
sub eax, ebx
cmp eax, ebp
jae 0x45d257
mov ebp, eax
cmp ebp, esi
jbe 0x45d291
mov edx, dword [esp + 0x30]
sub eax, ebp
push eax
lea ecx, [edx + ebx]
lea edx, [ecx + ebp]
push edx
push ecx
call fcn.00498880
mov edi, dword [esp + 0x40]
add esp, 0xc
sub edi, ebp
lea ecx, [esp + 0x2c]
push esi
push edi
call fcn.0041c2e0
test al, al
je 0x45d291
push edi
lea ecx, [esp + 0x30]
call fcn.0041c2c0
push esi
push esi
lea ecx, [esp + 0x34]
call fcn.0041c1a0
jmp 0x45d32e
cmp ebx, esi
jbe 0x45d2ee
cmp ebx, eax
jne 0x45d2ee
mov eax, dword [edi + 4]
cmp eax, esi
jne 0x45d2b5
mov eax, 0x4ad138
cmp byte [eax - 1], 0xfe
jae 0x45d2ee
push 1
lea ecx, [esp + 0x30]
call fcn.0041ba60
mov eax, dword [edi + 4]
cmp eax, esi
jne 0x45d2d2
mov eax, 0x4ad138
mov dword [esp + 0x30], eax
mov ecx, dword [edi + 8]
mov dword [esp + 0x34], ecx
mov edi, dword [edi + 0xc]
mov dword [esp + 0x38], edi
mov cl, byte [eax - 1]
inc cl
mov byte [eax - 1], cl
jmp 0x45d32e
push 1
push ebx
lea ecx, [esp + 0x34]
call fcn.0041c2e0
test al, al
je 0x45d32e
mov edi, dword [edi + 4]
cmp edi, esi
mov esi, 0x4ad138
je 0x45d30c
mov esi, edi
mov edi, dword [esp + 0x30]
mov ecx, ebx
mov eax, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x34], ebx
xor esi, esi
mov byte [ecx + ebx], 0
mov ecx, dword [esp + 0x6c]
mov byte [esp + 0xa0], 7
cmp ecx, esi
je 0x45d359
mov al, byte [ecx - 1]
dec ecx
test al, al
je 0x45d350
cmp al, 0xff
je 0x45d350
dec al
mov byte [ecx], al
jmp 0x45d359
push ecx
call fcn.00498130
add esp, 4
cmp word [esp + 0x34], 5
mov dword [esp + 0x6c], esi
mov dword [esp + 0x70], esi
mov dword [esp + 0x74], esi
jge 0x45d397
mov eax, dword [esp + 0x30]
cmp eax, esi
jne 0x45d37a
mov eax, 0x4ad138
push eax
call fcn.00498d40
mov ebx, eax
add esp, 4
cmp bx, 0xfc19
jl 0x45d397
cmp bx, 0x3e7
jle 0x45d423
mov edx, dword [esp + 0x24]
push esi
push 1
sub esp, 0x10
lea eax, [edx + 0x18]
mov edi, esp
mov dword [esp + 0x34], esp
push ecx
mov ecx, esp
mov dword [esp + 0x7c], esp
push eax
call fcn.00475910
push edi
call fcn.00477540
add esp, 8
push 0xa
lea ecx, [esp + 0xc4]
mov byte [esp + 0xbc], 0xf
call fcn.0041b6f0
sub esp, 0x10
mov edi, esp
mov dword [esp + 0x88], esp
push ecx
mov ecx, esp
mov dword [esp + 0x8c], esp
push eax
call fcn.00475910
push edi
call fcn.00477540
add esp, 8
mov ecx, 0x4c45b8
mov byte [esp + 0xc8], 7
call fcn.0047a9a0
jmp 0x45cf41
mov ecx, dword [esp + 0x5c]
push esi
push 7
call fcn.00475c80
jmp 0x45db76
mov eax, dword [esp + 0x24]
xor ecx, ecx
mov cl, bh
lea esi, [eax + 0x20]
push ecx
mov ecx, esi
call fcn.00475ce0
push ebx
mov ecx, esi
call fcn.00475ce0
mov dword [esp + 0x14], 1
push ecx
lea eax, [esp + 0x44]
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.00475910
mov ecx, dword [0x4c4560]
call fcn.0042d870
test ax, ax
je 0x45dbb7
mov dword [esp + 0x14], 1
push 0
lea ecx, [esp + 0x44]
jmp 0x45dba6
push 0x4c4538
push ecx
lea edx, [esp + 0x28]
mov ecx, esp
mov dword [esp + 0x24], esp
push edx
call fcn.00475910
mov ecx, ebx
call fcn.00447c50
cmp ax, bp
mov dword [esp + 0x14], esi
jne case.0x45cf1b.12
push esi
mov ecx, 0x4c4538
call fcn.0041b6f0
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
jmp 0x45d61b
push 0x4c4538
push ecx
lea eax, [esp + 0x28]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00475910
mov ecx, ebx
call fcn.00447c50
cmp ax, bp
mov dword [esp + 0x14], esi
jne case.0x45cf1b.12
push esi
mov ecx, 0x4c4538
call fcn.0041b6f0
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.00475910
lea ecx, [esp + 0x1c]
call fcn.00475ae0
lea ecx, [esp + 0x18]
call fcn.00475d00
cmp ax, 5
jle case.0x45cf1b.12
mov dword [esp + 0x14], ebp
add ebx, 0x20
jmp 0x45d5b4
push 0x4c4538
push ecx
lea edx, [esp + 0x28]
mov ecx, esp
mov dword [esp + 0x24], esp
push edx
call fcn.00475910
mov ecx, ebx
call fcn.00447c50
cmp ax, bp
mov dword [esp + 0x14], esi
jne case.0x45cf1b.12
push esi
mov ecx, 0x4c4538
call fcn.0041b6f0
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.00475910
lea ecx, [esp + 0x1c]
call fcn.00475ae0
lea ecx, [esp + 0x18]
call fcn.00475d00
cmp ax, 5
jle case.0x45cf1b.12
push 2
lea ecx, [esp + 0x1c]
mov dword [esp + 0x18], ebp
add ebx, 0x20
call fcn.00475c70
push eax
mov ecx, ebx
call fcn.00475ce0
push 3
lea ecx, [esp + 0x1c]
call fcn.00475c70
push eax
mov ecx, ebx
call fcn.00475ce0
push 4
lea ecx, [esp + 0x1c]
call fcn.00475c70
push eax
mov ecx, ebx
call fcn.00475ce0
push 5
lea ecx, [esp + 0x1c]
call fcn.00475c70
push eax
mov ecx, ebx
call fcn.00475ce0
jmp 0x45d446
push 0x4c4538
push ecx
lea eax, [esp + 0x28]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00475910
mov ecx, ebx
call fcn.00447c50
cmp ax, bp
mov dword [esp + 0x14], esi
jne case.0x45cf1b.12
push esi
mov ecx, 0x4c4538
call fcn.0041b6f0
push ecx
mov ecx, esp
mov dword [esp + 0x20], esp
push eax
call fcn.00475910
lea ecx, [esp + 0x1c]
call fcn.00475ae0
lea ecx, [esp + 0x18]
call fcn.00475d00
cmp ax, 3
jle case.0x45cf1b.12
push 2
lea ecx, [esp + 0x1c]
mov dword [esp + 0x18], ebp
add ebx, 0x20
call fcn.00475c70
push eax
mov ecx, ebx
call fcn.00475ce0
push 3
lea ecx, [esp + 0x1c]
call fcn.00475c70
push eax
mov ecx, ebx
call fcn.00475ce0
jmp 0x45d446
mov ecx, dword [esp + 0x24]
push 2
lea esi, [ecx + 0x20]
mov ecx, esi
call fcn.00475c70
movzx di, al
push 3
mov ecx, esi
shl edi, 8
call fcn.00475c70
xor dx, dx
push 0
mov dl, al
mov ecx, esi
add edi, edx
call fcn.00475c70
xor bx, bx
push 1
mov bl, al
mov ecx, esi
shl ebx, 8
call fcn.00475c70
movzx ax, al
add ebx, eax
push 4
mov ecx, esi
mov dword [esp + 0x28], ebx
call fcn.00475c70
movzx bp, al
push 5
mov ecx, esi
shl ebp, 8
call fcn.00475c70
xor cx, cx
push 6
mov cl, al
add ebp, ecx
mov ecx, esi
call fcn.00475c70
xor bx, bx
push 7
mov bl, al
mov ecx, esi
shl ebx, 8
call fcn.00475c70
xor dx, dx
and ebp, 0xffff
mov dl, al
mov dword [esp + 0x10], ebp
fild dword [esp + 0x10]
add ebx, edx
mov edx, dword [esp + 0x24]
sub edi, edx
and ebx, 0xffff
fmul qword [0x4ad1f0]
movsx eax, di
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
mov dword [esp + 0x10], ebx
fsubp st(1)
fild dword [esp + 0x10]
jmp 0x45d8da
mov ecx, dword [esp + 0x24]
push 2
lea esi, [ecx + 0x20]
mov ecx, esi
call fcn.00475c70
movzx di, al
push 3
mov ecx, esi
shl edi, 8
call fcn.00475c70
xor dx, dx
push 0
mov dl, al
mov ecx, esi
add edi, edx
call fcn.00475c70
xor bx, bx
push 1
mov bl, al
mov ecx, esi
shl ebx, 8
call fcn.00475c70
movzx ax, al
add ebx, eax
push 8
mov ecx, esi
mov dword [esp + 0x28], ebx
call fcn.00475c70
movzx bp, al
push 9
mov ecx, esi
shl ebp, 8
call fcn.00475c70
xor cx, cx
push 0xc
mov cl, al
add ebp, ecx
mov ecx, esi
call fcn.00475c70
xor bx, bx
push 0xd
mov bl, al
mov ecx, esi
shl ebx, 8
call fcn.00475c70
xor dx, dx
and ebp, 0xffff
mov dl, al
mov dword [esp + 0x10], ebp
fild dword [esp + 0x10]
add ebx, edx
mov edx, dword [esp + 0x24]
sub edi, edx
and ebx, 0xffff
fmul qword [0x4ad1f0]
movsx eax, di
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
mov dword [esp + 0x10], ebx
fsubp st(1)
fild dword [esp + 0x10]
fmul qword [0x4ad1f0]
fld st(0)
fchs
fld st(2)
fcompp
fnstsw ax
test ah, 1
jne 0x45d905
fxch st(1)
fcomp st(1)
fnstsw ax
test ah, 0x41
fstp st(0)
je 0x45db6e
push 6
mov ecx, esi
call fcn.00475c70
movzx di, al
push 7
mov ecx, esi
shl edi, 8
call fcn.00475c70
xor cx, cx
push 4
mov cl, al
add edi, ecx
mov ecx, esi
call fcn.00475c70
xor bx, bx
push 5
mov bl, al
mov ecx, esi
shl ebx, 8
call fcn.00475c70
xor dx, dx
push 0xa
mov dl, al
mov ecx, esi
add ebx, edx
mov dword [esp + 0x28], ebx
call fcn.00475c70
xor bx, bx
push 0xb
mov bl, al
mov ecx, esi
shl ebx, 8
call fcn.00475c70
movzx ax, al
push 0xc
mov ecx, esi
add ebx, eax
call fcn.00475c70
movzx bp, al
push 0xd
mov ecx, esi
shl ebp, 8
call fcn.00475c70
mov edx, dword [esp + 0x24]
and ebx, 0xffff
sub edi, edx
mov dword [esp + 0x10], ebx
fild dword [esp + 0x10]
movsx edx, di
fmul qword [0x4ad1f0]
xor cx, cx
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
mov cl, al
add ebp, ecx
and ebp, 0xffff
fsubp st(1)
mov dword [esp + 0x10], ebp
fild dword [esp + 0x10]
fmul qword [0x4ad1f0]
fld st(0)
fchs
fld st(2)
fcompp
fnstsw ax
test ah, 1
jne 0x45d905
fxch st(1)
fcomp st(1)
fstp st(0)
fnstsw ax
test ah, 0x41
je 0x45db6e
jmp 0x45d43e
fstp st(0)
fstp st(0)
jmp 0x45db6e
add ebx, 0x20
push 2
mov ecx, ebx
call fcn.00475c70
movzx si, al
push 3
mov ecx, ebx
shl esi, 8
call fcn.00475c70
movzx ax, al
push 0
mov ecx, ebx
add esi, eax
call fcn.00475c70
movzx bp, al
push 1
mov ecx, ebx
shl ebp, 8
call fcn.00475c70
xor cx, cx
push 4
mov cl, al
add ebp, ecx
mov ecx, ebx
call fcn.00475c70
movzx di, al
push 5
mov ecx, ebx
shl edi, 8
call fcn.00475c70
xor dx, dx
sub esi, ebp
mov dl, al
add edi, edx
and edi, 0xffff
mov dword [esp + 0x10], edi
fild dword [esp + 0x10]
movsx eax, si
fmul qword [0x4ad1f0]
mov dword [esp + 0x10], eax
fild dword [esp + 0x10]
fsubp st(1)
fcom qword [0x4ad240]
fnstsw ax
test ah, 1
jne 0x45d907
fcomp qword [0x4ad238]
jmp 0x45d8f5
lea esi, [ebx + 0x20]
push 2
mov ecx, esi
call fcn.00475c70
movzx di, al
push 3
mov ecx, esi
shl edi, 8
call fcn.00475c70
xor cx, cx
push 0
mov cl, al
add edi, ecx
mov ecx, esi
call fcn.00475c70
movzx bp, al
push 1
mov ecx, esi
shl ebp, 8
call fcn.00475c70
xor dx, dx
push 8
mov dl, al
mov ecx, esi
add ebp, edx
call fcn.00475c70
xor bx, bx
push 9
mov bl, al
mov ecx, esi
shl ebx, 8
call fcn.00475c70
movzx ax, al
add ebx, eax
sub edi, ebp
and ebx, 0xffff
mov dword [esp + 0x10], ebx
fild dword [esp + 0x10]
movsx ecx, di
fmul qword [0x4ad1f0]
mov dword [esp + 0x10], ecx
fild dword [esp + 0x10]
fsubp st(1)
fcom qword [0x4ad240]
fnstsw ax
test ah, 1
jne 0x45d907
fcomp qword [0x4ad238]
fnstsw ax
test ah, 0x41
je 0x45db6e
push 6
mov ecx, esi
call fcn.00475c70
movzx di, al
push 7
mov ecx, esi
shl edi, 8
call fcn.00475c70
xor dx, dx
push 4
mov dl, al
mov ecx, esi
add edi, edx
call fcn.00475c70
movzx bp, al
push 5
mov ecx, esi
shl ebp, 8
call fcn.00475c70
movzx ax, al
push 0xa
mov ecx, esi
add ebp, eax
call fcn.00475c70
xor bx, bx
push 0xb
mov bl, al
mov ecx, esi
shl ebx, 8
call fcn.00475c70
xor cx, cx
sub edi, ebp
mov cl, al
add ebx, ecx
and ebx, 0xffff
mov dword [esp + 0x10], ebx
fild dword [esp + 0x10]
movsx edx, di
fmul qword [0x4ad1f0]
mov dword [esp + 0x10], edx
fild dword [esp + 0x10]
jmp 0x45d991
lea edi, [ebx + 0x20]
push 2
mov ecx, edi
call fcn.00475c70
movzx si, al
push 3
mov ecx, edi
shl esi, 8
call fcn.00475c70
movzx ax, al
push 0
mov ecx, edi
add esi, eax
call fcn.00475c70
movzx bp, al
push 1
mov ecx, edi
shl ebp, 8
call fcn.00475c70
xor cx, cx
mov cl, al
add ebp, ecx
lea ecx, [esp + 0x20]
sub esi, ebp
lea esi, [esi + esi*4]
shl esi, 1
mov edx, esi
sar edx, 8
push edx
push 2
call fcn.00475c80
push esi
push 3
lea ecx, [esp + 0x28]
call fcn.00475c80
push 0x4c4538
push ecx
lea eax, [esp + 0x28]
mov ecx, esp
mov dword [esp + 0x24], esp
push eax
call fcn.00475910
mov ecx, ebx
call fcn.00447c50
cmp ax, 1
mov dword [esp + 0x14], eax
je 0x45d446
mov dword [esp + 0x14], 0
xor esi, esi
push ecx
lea edx, [esp + 0x40]
mov ecx, esp
mov dword [esp + 0x20], esp
push edx
call fcn.00475910
mov ecx, dword [0x4c4560]
call fcn.0042d870
cmp ax, si
je 0x45dbb7
mov dword [esp + 0x14], 1
push esi
lea ecx, [esp + 0x40]
call fcn.00475c70
mov ecx, dword [esp + 0x5c]
push eax
push 7
call fcn.00475c80
mov eax, dword [esp + 0x30]
xor esi, esi
cmp eax, esi
je 0x45dccd
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x45dcc4
cmp al, 0xff
je 0x45dcc4
dec al
mov byte [ecx], al
jmp 0x45dccd
lea esi, [ebx + 0x20]
push 2
mov ecx, esi
call fcn.00475c70
movzx di, al
push 3
mov ecx, esi
shl edi, 8
call fcn.00475c70
xor cx, cx
push 0
mov cl, al
add edi, ecx
mov ecx, esi
call fcn.00475c70
xor dx, dx
push 1
mov dl, al
mov ecx, esi
shl edx, 8
sub edi, edx
call fcn.00475c70
movzx ax, al
sub edi, eax
lea edi, [edi + edi*4]
shl edi, 1
mov ecx, edi
sar ecx, 8
push ecx
push 2
lea ecx, [esp + 0x28]
call fcn.00475c80
push edi
push 3
lea ecx, [esp + 0x28]
call fcn.00475c80
push 6
mov ecx, esi
call fcn.00475c70
movzx di, al
push 7
mov ecx, esi
shl edi, 8
call fcn.00475c70
xor dx, dx
push 4
mov dl, al
mov ecx, esi
add edi, edx
call fcn.00475c70
movzx bp, al
push 5
mov ecx, esi
shl ebp, 8
call fcn.00475c70
movzx ax, al
add ebp, eax
sub edi, ebp
lea esi, [edi + edi*4]
shl esi, 1
mov ecx, esi
sar ecx, 8
push ecx
push 4
lea ecx, [esp + 0x28]
call fcn.00475c80
push esi
push 5
lea ecx, [esp + 0x28]
call fcn.00475c80
push 0x4c4538
push ecx
lea edx, [esp + 0x28]
mov ecx, esp
mov dword [esp + 0x24], esp
push edx
jmp 0x45db54
push ecx
call fcn.00498130
add esp, 4
mov eax, dword [esp + 0x4c]
mov dword [esp + 0x30], esi
cmp eax, esi
mov dword [esp + 0x34], esi
mov dword [esp + 0x38], esi
je 0x45dcfe
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x45dcf5
cmp al, 0xff
je 0x45dcf5
dec al
mov byte [ecx], al
jmp 0x45dcfe
push ecx
call fcn.00498130
add esp, 4
lea ecx, [esp + 0x3c]
mov dword [esp + 0x4c], esi
mov dword [esp + 0x50], esi
mov dword [esp + 0x54], esi
mov byte [esp + 0xa0], 4
call fcn.00475a40
lea ecx, [esp + 0x40]
mov byte [esp + 0xa0], 3
call fcn.00475a40
lea ecx, [esp + 0x58]
mov byte [esp + 0xa0], 2
call fcn.00475a40
lea ecx, [esp + 0x18]
mov byte [esp + 0xa0], 1
call fcn.00475a40
lea ecx, [esp + 0x20]
mov byte [esp + 0xa0], 0
call fcn.00475a40
mov eax, dword [esp + 0xb0]
mov esi, dword [esp + 0xac]
cmp esi, eax
mov dword [esp + 0xa0], 0xffffffff
mov edi, eax
je 0x45dd93
mov ecx, esi
call fcn.00475a40
add esi, 4
cmp esi, edi
jne 0x45dd7e
mov esi, dword [esp + 0xac]
push esi
call fcn.00498130
mov ecx, dword [esp + 0x9c]
mov ax, word [esp + 0x18]
add esp, 4
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x94
ret 0x10