BaseLending
HourlyBondSubscriptionLending
contract name: BaseLending
WARNING!!!!
BaseLending_types.txt
Finance File not Found
Type File not found.
[x] BaseLending not run
contract name: HourlyBondSubscriptionLending
WARNING!!!!
HourlyBondSubscriptionLending_types.txt
Finance file: HourlyBondSubscriptionLending_ftypes.txt
"HourlyBondSubscriptionLending_types.txt" opened successfully.
[*c], HourlyBondSubscriptionLending



[t], global, hourlyBondAccounts

[t*], global, hourlyBondAccounts, amount, 1, -1, 0

[t], global, hourlyBondMetadata

[t*], global, hourlyBondMetadata, yieldAccumulator

[t*], global, hourlyBondMetadata.yieldAccumulator, accumulatorFP

[t], global, lendingMeta

[t], global, FP32

[t], global, withdrawalWindow

[t], global, yieldChangePerSecondFP

[t], global, borrowYieldAccumulators

[t], global, borrowingFactorPercent

[t], global, maxHourlyYieldFP



[t], updateHourlyBondAmount, issuer

[t], updateHourlyBondAmount, bond

[t*], updateHourlyBondAmount, bond, amount, 1, -1, 0



[t], viewHourlyBondAmount, issuer

[t], viewHourlyBondAmount, holder

Param: [t]
Param:  global
Param:  hourlyBondAccounts

Param: [t*]
Param:  global
Param:  hourlyBondAccounts
Param:  amount
Param:  f: 0

Isolated Param: 0
F num: 0
Param: [t]
Param:  global
Param:  hourlyBondMetadata

Param: [t*]
Param:  global
Param:  hourlyBondMetadata
Param:  yieldAccumulator

Param: [t*]
Param:  global
Param:  hourlyBondMetadata.yieldAccumulator
Param:  accumulatorFP
Param: f: 20

Isolated Param: 20
F num: 20
Param: [t]
Param:  global
Param:  lendingMeta

Param: [t]
Param:  global
Param:  FP32

Param: [t]
Param:  global
Param:  withdrawalWindow

Param: [t]
Param:  global
Param:  yieldChangePerSecondFP

Param: [t]
Param:  global
Param:  borrowYieldAccumulators

Param: [t]
Param:  global
Param:  borrowingFactorPercent

Param: [t]
Param:  global
Param:  maxHourlyYieldFP

Param: 

Param: [t]
Param:  updateHourlyBondAmount
Param:  issuer

Param: [t]
Param:  updateHourlyBondAmount
Param:  bond

Param: [t*]
Param:  updateHourlyBondAmount
Param:  bond
Param:  amount
Param:  f:0

Isolated Param: 0
F num: 0
Param: 

Param: [t]
Param:  viewHourlyBondAmount
Param:  issuer

Param: [t]
Param:  viewHourlyBondAmount
Param:  holder

[*] HourlyBondSubscriptionLending run
Checking... setWithdrawalWindow Visibility: external
[x] No Binary
Checking... _makeHourlyBond Visibility: internal
[x] Not visible 
Checking... updateHourlyBondAmount Visibility: public
[o] Marked
Checking... viewHourlyBondAmount Visibility: public
[o] Marked
Checking... _withdrawHourlyBond Visibility: internal
[x] Not visible 
Checking... calcCumulativeYieldFP Visibility: internal
[x] Not visible 
Checking... getUpdatedHourlyYield Visibility: internal
[x] Not visible 
Checking... viewCumulativeYieldFP Visibility: internal
[x] Not visible 
Checking... slitherConstructorVariables Visibility: internal
[x] Not visible 
Checking... slitherConstructorConstantVariables Visibility: internal
[x] Not visible 
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
State_var: FP32
Finding type for FP32...
uint256
Seen contract: {} Contract name out: BaseLending
[x] BaseLending not run
Seen contract: {'BaseLending': True} Contract name out: HourlyBondSubscriptionLending
[*] HourlyBondSubscriptionLending run
Reading Function: setWithdrawalWindow
Function setWithdrawalWindow not marked
Mark Iterations TRUE, proceeding anyway
Function name: setWithdrawalWindow
Function Visibility (test): external
window
Finding type for window...
uint256
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
clearning node...
typecheckig node...
clearning node...
clearing ir...?
withdrawalWindow_1(uint256) := window_1(uint256)
has variable
typecheckig node...
withdrawalWindow_1(uint256) := window_1(uint256)
Function name: setWithdrawalWindow
asgn

Name: window Function: setWithdrawalWindow
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: withdrawalWindow Function: setWithdrawalWindow
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for withdrawalWindow

Name: withdrawalWindow Function: setWithdrawalWindow
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 0 for function call "setWithdrawalWindow":
 New undefined nodes- 0
 Old undefined nodes- 0
No save for this scenario
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
None
yieldAccumulator
accumulatorFP
None
yieldAccumulator
lastUpdated
None
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: _makeHourlyBond
Function _makeHourlyBond not marked
Mark Iterations TRUE, proceeding anyway
Function name: _makeHourlyBond
Function Visibility (test): internal
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: updateHourlyBondAmount
Function name: updateHourlyBondAmount
Function Visibility (test): public
issuer
Finding type for issuer...
address
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: address
address
Final Type: address

Name: issuer Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
bond
Finding type for bond...
HourlyBond
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: HourlyBond
HourlyBond
Final Type: HourlyBond
updateHourlyBondAmount
bond
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
updateHourlyBondAmount
bond
yieldQuotientFP
updateHourlyBondAmount
bond
moduloHour
FIELDS:
bond Fields:
amount
^^^

Name: bond Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
-100
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [<slither.core.variables.structure_variable.StructureVariable object at 0x7f382c93c970>]
    fintype: -1
clearning node...
clearing ir...?
issuer_1(address) := ϕ(['issuer_1'])
has variable
[i] issuer cleared
clearing ir...?
bond_1(HourlyBond) := ϕ(["bond_1 (-> ['hourlyBondAccounts'])"])
has variable
[i] bond cleared
clearing ir...?
lendingMeta_5(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_10', 'lendingMeta_8', 'lendingMeta_0', 'lendingMeta_4', 'lendingMeta_1', 'lendingMeta_12'])
has variable
clearing ir...?
hourlyBondMetadata_3(mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)) := ϕ(['hourlyBondMetadata_0', 'hourlyBondMetadata_2', 'hourlyBondMetadata_7', 'hourlyBondMetadata_6', 'hourlyBondMetadata_4'])
has variable
typecheckig node...
issuer_1(address) := ϕ(['issuer_1'])
Function name: updateHourlyBondAmount
Phi
[i]Type for issuer

Name: issuer Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bond_1(HourlyBond) := ϕ(["bond_1 (-> ['hourlyBondAccounts'])"])
Function name: updateHourlyBondAmount
Phi
[i]Type for bond

Name: bond Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
lendingMeta_5(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_10', 'lendingMeta_8', 'lendingMeta_0', 'lendingMeta_4', 'lendingMeta_1', 'lendingMeta_12'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
hourlyBondMetadata_3(mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)) := ϕ(['hourlyBondMetadata_0', 'hourlyBondMetadata_2', 'hourlyBondMetadata_7', 'hourlyBondMetadata_6', 'hourlyBondMetadata_4'])
Function name: updateHourlyBondAmount
Phi
[i]Type for hourlyBondMetadata

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_22(uint256) -> bond_1.yieldQuotientFP
has variable
clearing ir...?
yieldQuotientFP_1(uint256) := REF_22(uint256)
has variable
[i] yieldQuotientFP cleared
typecheckig node...
REF_22(uint256) -> bond_1.yieldQuotientFP
Function name: updateHourlyBondAmount
MEMBER
bond
yieldQuotientFP
updateHourlyBondAmount
bond Fields:
amount
^^^
[i]Type for REF_22

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldQuotientFP_1(uint256) := REF_22(uint256)
Function name: updateHourlyBondAmount
asgn

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
yieldQuotientFP_1(uint256) := REF_22(uint256)
XXXXX
clearning node...
clearing ir...?
TMP_54(bool) = yieldQuotientFP_1 > 0
has variable
[i] TMP_54 cleared
clearing ir...?
CONDITION TMP_54
typecheckig node...
TMP_54(bool) = yieldQuotientFP_1 > 0
Function name: updateHourlyBondAmount
testing gt...
val: 0
val: 0
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1}
Right type: -1, Left type: -1
Final dest type: -1

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
val: 0

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: TMP_54 Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_54

Name: TMP_54 Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_54(bool) = yieldQuotientFP_1 > 0
XXXXX
CONDITION TMP_54
Condition...
Conidtion: 
TMP_54
TMP_54
clearning node...
typecheckig node...
clearning node...
clearing ir...?
REF_23(HourlyBondSubscriptionLending.HourlyBondMetadata) -> hourlyBondMetadata_3[issuer_1]
has variable
clearing ir...?
TMP_55(BaseLending.YieldAccumulator) = INTERNAL_CALL, HourlyBondSubscriptionLending.getUpdatedHourlyYield(address,HourlyBondSubscriptionLending.HourlyBondMetadata)(issuer_1,REF_23)
has variable
[i] TMP_55 cleared
clearing ir...?
lendingMeta_6(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_12'])
has variable
clearing ir...?
yA_1 (-> ['TMP_55'])(BaseLending.YieldAccumulator) := TMP_55(BaseLending.YieldAccumulator)
has variable
[i] yA cleared
typecheckig node...
REF_23(HourlyBondSubscriptionLending.HourlyBondMetadata) -> hourlyBondMetadata_3[issuer_1]
Function name: updateHourlyBondAmount
INDEX

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_23

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
TMP_55(BaseLending.YieldAccumulator) = INTERNAL_CALL, HourlyBondSubscriptionLending.getUpdatedHourlyYield(address,HourlyBondSubscriptionLending.HourlyBondMetadata)(issuer_1,REF_23)
Function name: updateHourlyBondAmount
Internal call...
getUpdatedHourlyYield
issuer
REF_23
Function: getUpdatedHourlyYield
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [<slither.core.variables.structure_variable.StructureVariable object at 0x7f382c989190>]
    fintype: -1
-100
added
xyz
Function name: getUpdatedHourlyYield
Function Visibility: internal
clearning node...
clearing ir...?
issuer_1(address) := ϕ(['issuer_1'])
has variable
[i] issuer cleared
clearing ir...?
bondMeta_1 (-> [])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(['REF_23'])
has variable
[i] bondMeta cleared
clearing ir...?
lendingMeta_11(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_10', 'lendingMeta_8', 'lendingMeta_0', 'lendingMeta_4', 'lendingMeta_1', 'lendingMeta_12'])
has variable
clearing ir...?
borrowYieldAccumulators_1(mapping(address => BaseLending.YieldAccumulator)) := ϕ(['borrowYieldAccumulators_5', 'borrowYieldAccumulators_0'])
has variable
clearing ir...?
maxHourlyYieldFP_2(uint256) := ϕ(['maxHourlyYieldFP_4', 'maxHourlyYieldFP_0', 'maxHourlyYieldFP_1'])
has variable
clearing ir...?
borrowingFactorPercent_1(uint256) := ϕ(['borrowingFactorPercent_0', 'borrowingFactorPercent_6'])
has variable
typecheckig node...
issuer_1(address) := ϕ(['issuer_1'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for issuer

Name: issuer Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: issuer
Fields: 
Finance Type: undef
done.
bondMeta_1 (-> [])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(['REF_23'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
lendingMeta_11(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_10', 'lendingMeta_8', 'lendingMeta_0', 'lendingMeta_4', 'lendingMeta_1', 'lendingMeta_12'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_1(mapping(address => BaseLending.YieldAccumulator)) := ϕ(['borrowYieldAccumulators_5', 'borrowYieldAccumulators_0'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
maxHourlyYieldFP_2(uint256) := ϕ(['maxHourlyYieldFP_4', 'maxHourlyYieldFP_0', 'maxHourlyYieldFP_1'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for maxHourlyYieldFP

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowingFactorPercent_1(uint256) := ϕ(['borrowingFactorPercent_0', 'borrowingFactorPercent_6'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowingFactorPercent

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_52(BaseLending.YieldAccumulator) -> bondMeta_1 (-> []).yieldAccumulator
has variable
clearing ir...?
accumulator_1 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := REF_52(BaseLending.YieldAccumulator)
has variable
[i] accumulator cleared
typecheckig node...
REF_52(BaseLending.YieldAccumulator) -> bondMeta_1 (-> []).yieldAccumulator
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
yieldAccumulator
getUpdatedHourlyYield
bondMeta Fields:
yieldAccumulator
^^^

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
[i]Type for REF_52

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
accumulator_1 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := REF_52(BaseLending.YieldAccumulator)
Function name: getUpdatedHourlyYield
asgn

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: accumulator Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_53(uint256) -> accumulator_1 (-> ['bondMeta']).lastUpdated
has variable
clearing ir...?
TMP_78(uint256) = block.timestamp (c)- REF_53
has variable
[i] TMP_78 cleared
clearing ir...?
timeDelta_1(uint256) := TMP_78(uint256)
has variable
[i] timeDelta cleared
typecheckig node...
REF_53(uint256) -> accumulator_1 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
accumulatorFP
^^^
[i]Type for REF_53

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_78(uint256) = block.timestamp (c)- REF_53
Function name: getUpdatedHourlyYield
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_1 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: PIC_1 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_78 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_78

Name: TMP_78 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_78(uint256) = block.timestamp (c)- REF_53
XXXXX
timeDelta_1(uint256) := TMP_78(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_78 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_54(uint256) -> accumulator_1 (-> ['bondMeta']).accumulatorFP
has variable
clearing ir...?
TMP_79(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(accumulator_1 (-> ['bondMeta']),timeDelta_1)
has variable
[i] TMP_79 cleared
clearing ir...?
accumulator_2 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_1 (-> ['bondMeta'])"])
has variable
[i] accumulator cleared
clearing ir...?
REF_54 (->accumulator_2 (-> ['bondMeta'])) := TMP_79(uint256)
has variable
clearing ir...?
bondMeta_2 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_2 (-> ['bondMeta'])"])
has variable
[i] bondMeta cleared
typecheckig node...
REF_54(uint256) -> accumulator_1 (-> ['bondMeta']).accumulatorFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
accumulatorFP
getUpdatedHourlyYield
accumulator Fields:
lastUpdated
accumulatorFP
^^^

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
[i]Type for REF_54

Name: accumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_79(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(accumulator_1 (-> ['bondMeta']),timeDelta_1)
Function name: getUpdatedHourlyYield
Internal call...
calcCumulativeYieldFP
accumulator
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [lastUpdated, <slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: calcCumulativeYieldFP
Function Visibility: internal
clearning node...
clearing ir...?
yieldAccumulator_1 (-> [])(BaseLending.YieldAccumulator) := ϕ(["accumulator_1 (-> ['bondMeta'])", "borrowAccumulator_1 (-> ['borrowYieldAccumulators'])", 'yA_1 (-> [])'])
has variable
[i] yieldAccumulator cleared
clearing ir...?
timeDelta_1(uint256) := ϕ(['timeDelta_1', 'timeDelta_1', 'timeDelta_2'])
has variable
[i] timeDelta cleared
clearing ir...?
FP32_1(uint256) := ϕ(['FP32_0'])
has variable
typecheckig node...
yieldAccumulator_1 (-> [])(BaseLending.YieldAccumulator) := ϕ(["accumulator_1 (-> ['bondMeta'])", "borrowAccumulator_1 (-> ['borrowYieldAccumulators'])", 'yA_1 (-> [])'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for yieldAccumulator

Name: yieldAccumulator Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: lastUpdated, accumulatorFP
Finance Type: undef
done.
timeDelta_1(uint256) := ϕ(['timeDelta_1', 'timeDelta_1', 'timeDelta_2'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for timeDelta

Name: timeDelta Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
FP32_1(uint256) := ϕ(['FP32_0'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for FP32

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_67(uint256) = timeDelta_1 (c)% 3600
has variable
[i] TMP_67 cleared
clearing ir...?
secondsDelta_1(uint256) := TMP_67(uint256)
has variable
[i] secondsDelta cleared
typecheckig node...
TMP_67(uint256) = timeDelta_1 (c)% 3600
Function name: calcCumulativeYieldFP
[i]Type for TMP_67

Name: TMP_67 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
secondsDelta_1(uint256) := TMP_67(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: TMP_67 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: secondsDelta Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for secondsDelta

Name: secondsDelta Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
secondsDelta_1(uint256) := TMP_67(uint256)
XXXXX
clearning node...
clearing ir...?
REF_49(uint256) -> yieldAccumulator_1 (-> []).accumulatorFP
has variable
clearing ir...?
REF_50(uint256) -> yieldAccumulator_1 (-> []).hourlyYieldFP
has variable
clearing ir...?
TMP_68(uint256) = REF_49 (c)* REF_50
has variable
[i] TMP_68 cleared
clearing ir...?
TMP_69(uint256) = TMP_68 (c)* secondsDelta_1
has variable
[i] TMP_69 cleared
clearing ir...?
TMP_70(uint256) = FP32_1 (c)* 3600
has variable
[i] TMP_70 cleared
clearing ir...?
TMP_71(uint256) = TMP_69 (c)/ TMP_70
has variable
[i] TMP_71 cleared
clearing ir...?
accumulatorFP_1(uint256) := TMP_71(uint256)
has variable
[i] accumulatorFP cleared
typecheckig node...
REF_49(uint256) -> yieldAccumulator_1 (-> []).accumulatorFP
Function name: calcCumulativeYieldFP
MEMBER
yieldAccumulator
accumulatorFP
calcCumulativeYieldFP
yieldAccumulator Fields:
lastUpdated
accumulatorFP
^^^

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
[i]Type for REF_49

Name: yieldAccumulator.accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: yieldAccumulator.accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
REF_50(uint256) -> yieldAccumulator_1 (-> []).hourlyYieldFP
Function name: calcCumulativeYieldFP
MEMBER
yieldAccumulator
hourlyYieldFP
calcCumulativeYieldFP
yieldAccumulator Fields:
lastUpdated
accumulatorFP
^^^
[i]Type for REF_50

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_68(uint256) = REF_49 (c)* REF_50
Function name: calcCumulativeYieldFP
testing mul...
lnorm: u rnorm: u
Dest type: 20, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1}
Dest updated
Right type: -1, Left type: 20
Final dest type: 120

Name: yieldAccumulator.accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: TMP_68 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_68

Name: TMP_68 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
This IR caused addback:
TMP_68(uint256) = REF_49 (c)* REF_50
XXXXX
TMP_69(uint256) = TMP_68 (c)* secondsDelta_1
Function name: calcCumulativeYieldFP
testing mul...
lnorm: u rnorm: u
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 120
Final dest type: 120

Name: TMP_68 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_69 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_69

Name: TMP_69 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
This IR caused addback:
TMP_69(uint256) = TMP_68 (c)* secondsDelta_1
XXXXX
TMP_70(uint256) = FP32_1 (c)* 3600
Function name: calcCumulativeYieldFP
testing mul...
val: 3600
val: 3600
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
val: 3600

Name: 3600 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: TMP_70 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_70

Name: TMP_70 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
TMP_71(uint256) = TMP_69 (c)/ TMP_70
Function name: calcCumulativeYieldFP
lnorm: u rnorm: 0
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 120
Final dest type: 120

Name: TMP_71 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_71

Name: TMP_71 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
accumulatorFP_1(uint256) := TMP_71(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: TMP_71 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for accumulatorFP

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
clearning node...
clearing ir...?
TMP_72(uint256) = timeDelta_1 (c)/ 3600
has variable
[i] TMP_72 cleared
clearing ir...?
hoursDelta_1(uint256) := TMP_72(uint256)
has variable
[i] hoursDelta cleared
typecheckig node...
TMP_72(uint256) = timeDelta_1 (c)/ 3600
Function name: calcCumulativeYieldFP
val: 3600
val: 3600
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_72 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: undef
val: 3600
[i]Type for TMP_72

Name: TMP_72 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
hoursDelta_1(uint256) := TMP_72(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: TMP_72 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: hoursDelta Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for hoursDelta

Name: hoursDelta Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_73(bool) = hoursDelta_1 > 0
has variable
[i] TMP_73 cleared
clearing ir...?
CONDITION TMP_73
typecheckig node...
TMP_73(bool) = hoursDelta_1 > 0
Function name: calcCumulativeYieldFP
testing gt...
val: 0
val: 0
lnorm: 0 rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_73

Name: TMP_73 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_73
Condition...
Conidtion: 
TMP_73
TMP_73
clearning node...
clearing ir...?
i_1(uint256) := 0(uint256)
has variable
[i] i cleared
typecheckig node...
i_1(uint256) := 0(uint256)
Function name: calcCumulativeYieldFP
asgn
val: 0

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: i Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
val: 0
0
val: 0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for i

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
typecheckig node...
clearning node...
typecheckig node...
clearning node...
clearing ir...?
accumulatorFP_2(uint256) := ϕ(['accumulatorFP_1', 'accumulatorFP_3'])
has variable
[i] accumulatorFP cleared
clearing ir...?
i_2(uint256) := ϕ(['i_1', 'i_3'])
has variable
[i] i cleared
clearing ir...?
TMP_74(bool) = hoursDelta_1 > i_2
has variable
[i] TMP_74 cleared
clearing ir...?
CONDITION TMP_74
typecheckig node...
accumulatorFP_2(uint256) := ϕ(['accumulatorFP_1', 'accumulatorFP_3'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for accumulatorFP

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
i_2(uint256) := ϕ(['i_1', 'i_3'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for i

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
TMP_74(bool) = hoursDelta_1 > i_2
Function name: calcCumulativeYieldFP
testing gt...
lnorm: 0 rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_74

Name: TMP_74 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_74
Condition...
Conidtion: 
TMP_74
TMP_74
clearning node...
typecheckig node...
clearning node...
clearing ir...?
REF_51(uint256) -> yieldAccumulator_1 (-> []).hourlyYieldFP
has variable
clearing ir...?
TMP_75(uint256) = accumulatorFP_2 (c)* REF_51
has variable
[i] TMP_75 cleared
clearing ir...?
TMP_76(uint256) = TMP_75 (c)/ FP32_1
has variable
[i] TMP_76 cleared
clearing ir...?
accumulatorFP_3(uint256) := TMP_76(uint256)
has variable
[i] accumulatorFP cleared
typecheckig node...
REF_51(uint256) -> yieldAccumulator_1 (-> []).hourlyYieldFP
Function name: calcCumulativeYieldFP
MEMBER
yieldAccumulator
hourlyYieldFP
calcCumulativeYieldFP
yieldAccumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_51

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_75(uint256) = accumulatorFP_2 (c)* REF_51
Function name: calcCumulativeYieldFP
testing mul...
lnorm: 0 rnorm: u
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 120
Final dest type: 120

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_75 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_75

Name: TMP_75 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
TMP_76(uint256) = TMP_75 (c)/ FP32_1
Function name: calcCumulativeYieldFP
lnorm: 0 rnorm: u
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 120
Final dest type: 120

Name: TMP_76 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_76

Name: TMP_76 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
accumulatorFP_3(uint256) := TMP_76(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: TMP_76 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for accumulatorFP

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
clearning node...
clearing ir...?
TMP_77(uint256) := i_2(uint256)
has variable
[i] TMP_77 cleared
clearing ir...?
i_3(uint256) = i_2 (c)+ 1
has variable
[i] i cleared
typecheckig node...
TMP_77(uint256) := i_2(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: TMP_77 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for TMP_77

Name: TMP_77 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
i_3(uint256) = i_2 (c)+ 1
Function name: calcCumulativeYieldFP
val: 1

Name: i Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 1
lnorm: 0 rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
val: 1

Name: 1 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: i Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for i

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
RETURN accumulatorFP_2
RETURN

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
WORKLIST iteration 0 for function call "calcCumulativeYieldFP":
 New undefined nodes- 2
 Old undefined nodes- 0
typecheckig node...
yieldAccumulator_1 (-> [])(BaseLending.YieldAccumulator) := ϕ(["accumulator_1 (-> ['bondMeta'])", "borrowAccumulator_1 (-> ['borrowYieldAccumulators'])", 'yA_1 (-> [])'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for yieldAccumulator

Name: yieldAccumulator Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
timeDelta_1(uint256) := ϕ(['timeDelta_1', 'timeDelta_1', 'timeDelta_2'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for timeDelta

Name: timeDelta Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
FP32_1(uint256) := ϕ(['FP32_0'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for FP32

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_67(uint256) = timeDelta_1 (c)% 3600
Function name: calcCumulativeYieldFP
[i]Type for TMP_67

Name: TMP_67 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
secondsDelta_1(uint256) := TMP_67(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: TMP_67 Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: secondsDelta Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for secondsDelta

Name: secondsDelta Function: calcCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
secondsDelta_1(uint256) := TMP_67(uint256)
XXXXX
typecheckig node...
REF_49(uint256) -> yieldAccumulator_1 (-> []).accumulatorFP
Function name: calcCumulativeYieldFP
MEMBER
yieldAccumulator
accumulatorFP
calcCumulativeYieldFP
yieldAccumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
[i]Type for REF_49

Name: yieldAccumulator.accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: yieldAccumulator.accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
REF_50(uint256) -> yieldAccumulator_1 (-> []).hourlyYieldFP
Function name: calcCumulativeYieldFP
MEMBER
yieldAccumulator
hourlyYieldFP
calcCumulativeYieldFP
yieldAccumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_50

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_68(uint256) = REF_49 (c)* REF_50
Function name: calcCumulativeYieldFP
testing mul...
lnorm: u rnorm: u
Dest type: 20, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 20
Final dest type: 120

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_68 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_68

Name: TMP_68 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
TMP_69(uint256) = TMP_68 (c)* secondsDelta_1
Function name: calcCumulativeYieldFP
testing mul...
lnorm: u rnorm: u
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 120
Final dest type: 120

Name: TMP_68 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_69 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_69

Name: TMP_69 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
This IR caused addback:
TMP_69(uint256) = TMP_68 (c)* secondsDelta_1
XXXXX
TMP_70(uint256) = FP32_1 (c)* 3600
Function name: calcCumulativeYieldFP
testing mul...
val: 3600
val: 3600
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
val: 3600

Name: 3600 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: TMP_70 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_70

Name: TMP_70 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
TMP_71(uint256) = TMP_69 (c)/ TMP_70
Function name: calcCumulativeYieldFP
lnorm: u rnorm: 0
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 120
Final dest type: 120

Name: TMP_71 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_71

Name: TMP_71 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
accumulatorFP_1(uint256) := TMP_71(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: TMP_71 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
0
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for accumulatorFP

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
typecheckig node...
TMP_72(uint256) = timeDelta_1 (c)/ 3600
Function name: calcCumulativeYieldFP
val: 3600
val: 3600
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_72 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
val: 3600
[i]Type for TMP_72

Name: TMP_72 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
hoursDelta_1(uint256) := TMP_72(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: TMP_72 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: hoursDelta Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for hoursDelta

Name: hoursDelta Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_73(bool) = hoursDelta_1 > 0
Function name: calcCumulativeYieldFP
testing gt...
val: 0
val: 0
lnorm: 0 rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_73

Name: TMP_73 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_73
Condition...
Conidtion: 
TMP_73
TMP_73
typecheckig node...
i_1(uint256) := 0(uint256)
Function name: calcCumulativeYieldFP
asgn
val: 0

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
val: 0
0
val: 0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for i

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
typecheckig node...
typecheckig node...
accumulatorFP_2(uint256) := ϕ(['accumulatorFP_1', 'accumulatorFP_3'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for accumulatorFP

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
i_2(uint256) := ϕ(['i_1', 'i_3'])
Function name: calcCumulativeYieldFP
Phi
[i]Type for i

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
TMP_74(bool) = hoursDelta_1 > i_2
Function name: calcCumulativeYieldFP
testing gt...
lnorm: 0 rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_74

Name: TMP_74 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_74
Condition...
Conidtion: 
TMP_74
TMP_74
typecheckig node...
typecheckig node...
REF_51(uint256) -> yieldAccumulator_1 (-> []).hourlyYieldFP
Function name: calcCumulativeYieldFP
MEMBER
yieldAccumulator
hourlyYieldFP
calcCumulativeYieldFP
yieldAccumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_51

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_75(uint256) = accumulatorFP_2 (c)* REF_51
Function name: calcCumulativeYieldFP
testing mul...
lnorm: 0 rnorm: u
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 120
Final dest type: 120

Name: yieldAccumulator.hourlyYieldFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_75 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_75

Name: TMP_75 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
TMP_76(uint256) = TMP_75 (c)/ FP32_1
Function name: calcCumulativeYieldFP
lnorm: 0 rnorm: u
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Dest updated
Right type: -1, Left type: 120
Final dest type: 120

Name: TMP_76 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_76

Name: TMP_76 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
accumulatorFP_3(uint256) := TMP_76(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: TMP_76 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
0
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for accumulatorFP

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
typecheckig node...
TMP_77(uint256) := i_2(uint256)
Function name: calcCumulativeYieldFP
asgn

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: TMP_77 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for TMP_77

Name: TMP_77 Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
i_3(uint256) = i_2 (c)+ 1
Function name: calcCumulativeYieldFP
val: 1

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 1
lnorm: 0 rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
val: 1

Name: 1 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for i

Name: i Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
RETURN accumulatorFP_2
RETURN

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
WORKLIST iteration 1 for function call "calcCumulativeYieldFP":
 New undefined nodes- 2
 Old undefined nodes- 2
Saving return values for: calcCumulativeYieldFP

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
___
[i]Type for TMP_79

Name: TMP_79 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
This IR caused addback:
TMP_79(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(accumulator_1 (-> ['bondMeta']),timeDelta_1)
XXXXX
accumulator_2 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_1 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
REF_54 (->accumulator_2 (-> ['bondMeta'])) := TMP_79(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_79 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
0
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for REF_54

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
bondMeta_2 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_2 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_55(BaseLending.LendingMetadata) -> lendingMeta_12[issuer_1]
has variable
clearing ir...?
meta_1 (-> ['lendingMeta'])(BaseLending.LendingMetadata) := REF_55(BaseLending.LendingMetadata)
has variable
[i] meta cleared
typecheckig node...
REF_55(BaseLending.LendingMetadata) -> lendingMeta_12[issuer_1]
Function name: getUpdatedHourlyYield
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
lendingMeta
[i]Type for REF_55

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_55(BaseLending.LendingMetadata) -> lendingMeta_12[issuer_1]
XXXXX
meta_1 (-> ['lendingMeta'])(BaseLending.LendingMetadata) := REF_55(BaseLending.LendingMetadata)
Function name: getUpdatedHourlyYield
asgn

Name: REF_55 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for meta

Name: meta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_56(BaseLending.YieldAccumulator) -> borrowYieldAccumulators_2[issuer_1]
has variable
clearing ir...?
borrowAccumulator_1 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := REF_56(BaseLending.YieldAccumulator)
has variable
[i] borrowAccumulator cleared
typecheckig node...
REF_56(BaseLending.YieldAccumulator) -> borrowYieldAccumulators_2[issuer_1]
Function name: getUpdatedHourlyYield
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
borrowYieldAccumulators
[i]Type for REF_56

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_56(BaseLending.YieldAccumulator) -> borrowYieldAccumulators_2[issuer_1]
XXXXX
borrowAccumulator_1 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := REF_56(BaseLending.YieldAccumulator)
Function name: getUpdatedHourlyYield
asgn

Name: REF_56 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_57(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).hourlyYieldFP
has variable
clearing ir...?
REF_58(uint256) -> meta_1 (-> ['lendingMeta']).totalBorrowed
has variable
clearing ir...?
TMP_80(uint256) = REF_57 (c)* REF_58
has variable
[i] TMP_80 cleared
clearing ir...?
REF_59(uint256) -> meta_1 (-> ['lendingMeta']).totalLending
has variable
clearing ir...?
TMP_81(uint256) = 1 (c)+ REF_59
has variable
[i] TMP_81 cleared
clearing ir...?
TMP_82(uint256) = TMP_80 (c)/ TMP_81
has variable
[i] TMP_82 cleared
clearing ir...?
yieldGeneratedFP_1(uint256) := TMP_82(uint256)
has variable
[i] yieldGeneratedFP cleared
typecheckig node...
REF_57(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
hourlyYieldFP
getUpdatedHourlyYield
borrowAccumulator Fields:
^^^
[i]Type for REF_57

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_58(uint256) -> meta_1 (-> ['lendingMeta']).totalBorrowed
Function name: getUpdatedHourlyYield
MEMBER
meta
totalBorrowed
getUpdatedHourlyYield
meta Fields:
^^^
[i]Type for REF_58

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalBorrowed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_80(uint256) = REF_57 (c)* REF_58
Function name: getUpdatedHourlyYield
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_80 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_80

Name: TMP_80 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_80(uint256) = REF_57 (c)* REF_58
XXXXX
REF_59(uint256) -> meta_1 (-> ['lendingMeta']).totalLending
Function name: getUpdatedHourlyYield
MEMBER
meta
totalLending
getUpdatedHourlyYield
meta Fields:
totalBorrowed
^^^
[i]Type for REF_59

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_81(uint256) = 1 (c)+ REF_59
Function name: getUpdatedHourlyYield
val: 1

Name: TMP_81 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 1
lnorm: 0 rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
val: 1

Name: 1 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: TMP_81 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_81

Name: TMP_81 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_81(uint256) = 1 (c)+ REF_59
XXXXX
TMP_82(uint256) = TMP_80 (c)/ TMP_81
Function name: getUpdatedHourlyYield
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_82 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_82

Name: TMP_82 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_82(uint256) = TMP_80 (c)/ TMP_81
XXXXX
yieldGeneratedFP_1(uint256) := TMP_82(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_82 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: yieldGeneratedFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldGeneratedFP

Name: yieldGeneratedFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_83(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(maxHourlyYieldFP_3,yieldGeneratedFP_1)
has variable
[i] TMP_83 cleared
clearing ir...?
_maxHourlyYieldFP_1(uint256) := TMP_83(uint256)
has variable
[i] _maxHourlyYieldFP cleared
typecheckig node...
TMP_83(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(maxHourlyYieldFP_3,yieldGeneratedFP_1)
Function name: getUpdatedHourlyYield
Internal call...
min
maxHourlyYieldFP
yieldGeneratedFP
Function: min
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: min
Function Visibility: internal
clearning node...
clearing ir...?
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
has variable
[i] a cleared
clearing ir...?
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
has variable
[i] b cleared
typecheckig node...
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
Function name: min
Phi
[i]Type for a

Name: a Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
Function name: min
Phi
[i]Type for b

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_48(bool) = a_1 > b_1
has variable
[i] TMP_48 cleared
clearing ir...?
CONDITION TMP_48
typecheckig node...
TMP_48(bool) = a_1 > b_1
Function name: min
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_48

Name: TMP_48 Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_48
Condition...
Conidtion: 
TMP_48
TMP_48
clearning node...
clearing ir...?
RETURN a_1
typecheckig node...
RETURN a_1
RETURN

Name: a Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
typecheckig node...
RETURN b_1
RETURN

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
WORKLIST iteration 0 for function call "min":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: min

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
___
Check copy_toekn_tuple
([-1], [-1], 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256
[i]Type for TMP_83

Name: TMP_83 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
_maxHourlyYieldFP_1(uint256) := TMP_83(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_83 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: _maxHourlyYieldFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for _maxHourlyYieldFP

Name: _maxHourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_60(uint256) -> accumulator_2 (-> ['bondMeta']).hourlyYieldFP
has variable
clearing ir...?
REF_61(uint256) -> accumulator_2 (-> ['bondMeta']).hourlyYieldFP
has variable
clearing ir...?
REF_62(uint256) -> accumulator_2 (-> ['bondMeta']).lastUpdated
has variable
clearing ir...?
REF_63(uint256) -> meta_1 (-> ['lendingMeta']).totalLending
has variable
clearing ir...?
TMP_84(uint256) = INTERNAL_CALL, BaseLending.lendingTarget(BaseLending.LendingMetadata)(meta_1 (-> ['lendingMeta']))
has variable
[i] TMP_84 cleared
clearing ir...?
REF_64(uint256) -> bondMeta_1 (-> []).buyingSpeed
has variable
clearing ir...?
REF_65(uint256) -> bondMeta_1 (-> []).withdrawingSpeed
has variable
clearing ir...?
TMP_85(uint256) = INTERNAL_CALL, BaseLending.updatedYieldFP(uint256,uint256,uint256,uint256,uint256,uint256,uint256)(REF_61,REF_62,REF_63,TMP_84,REF_64,REF_65,_maxHourlyYieldFP_1)
has variable
[i] TMP_85 cleared
clearing ir...?
accumulator_3 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_2 (-> ['bondMeta'])"])
has variable
[i] accumulator cleared
clearing ir...?
REF_60 (->accumulator_3 (-> ['bondMeta'])) := TMP_85(uint256)
has variable
clearing ir...?
bondMeta_3 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_3 (-> ['bondMeta'])"])
has variable
[i] bondMeta cleared
typecheckig node...
REF_60(uint256) -> accumulator_2 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
accumulatorFP
^^^
[i]Type for REF_60

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_61(uint256) -> accumulator_2 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
accumulatorFP
^^^
[i]Type for REF_61

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_62(uint256) -> accumulator_2 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
accumulatorFP
^^^
Check copy_toekn_tuple
([-1], [-1], 'u', None)
----
Type: uint256
uint256
Final Type: uint256
Check copy_toekn_tuple
([-1], [-1], 'u', None)
----
Type: None
None
Final Type: None
[i]Type for REF_62

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_63(uint256) -> meta_1 (-> ['lendingMeta']).totalLending
Function name: getUpdatedHourlyYield
MEMBER
meta
totalLending
getUpdatedHourlyYield
meta Fields:
totalBorrowed
totalLending
^^^

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_63

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_84(uint256) = INTERNAL_CALL, BaseLending.lendingTarget(BaseLending.LendingMetadata)(meta_1 (-> ['lendingMeta']))
Function name: getUpdatedHourlyYield
Internal call...
lendingTarget
meta
Function: lendingTarget
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [totalBorrowed, totalLending]
    fintype: -1
-100
added
xyz
Function name: lendingTarget
Function Visibility: internal
clearning node...
clearing ir...?
meta_1 (-> [])(BaseLending.LendingMetadata) := ϕ(["meta_1 (-> ['lendingMeta'])", "meta_1 (-> ['lendingMeta'])"])
has variable
[i] meta cleared
typecheckig node...
meta_1 (-> [])(BaseLending.LendingMetadata) := ϕ(["meta_1 (-> ['lendingMeta'])", "meta_1 (-> ['lendingMeta'])"])
Function name: lendingTarget
Phi
[i]Type for meta

Name: meta Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalBorrowed, totalLending
Finance Type: undef
done.
typecheckig node...
REF_4(uint256) -> meta_1 (-> []).lendingCap
Function name: lendingTarget
MEMBER
meta
lendingCap
lendingTarget
meta Fields:
totalBorrowed
totalLending
^^^
[i]Type for REF_4

Name: meta.lendingCap Function: lendingTarget
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.lendingCap Function: lendingTarget
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lendingCap Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_5(uint256) -> meta_1 (-> []).totalBorrowed
Function name: lendingTarget
MEMBER
meta
totalBorrowed
lendingTarget
meta Fields:
lendingCap
totalBorrowed
totalLending
^^^

Name: totalBorrowed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_5

Name: meta.totalBorrowed Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalBorrowed Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalBorrowed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_6(uint256) -> meta_1 (-> []).lendingBuffer
Function name: lendingTarget
MEMBER
meta
lendingBuffer
lendingTarget
meta Fields:
lendingCap
totalBorrowed
totalLending
^^^
[i]Type for REF_6

Name: meta.lendingBuffer Function: lendingTarget
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.lendingBuffer Function: lendingTarget
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lendingBuffer Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_49(uint256) = REF_5 (c)+ REF_6
Function name: lendingTarget

Name: TMP_49 Function: lendingTarget
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: meta.totalBorrowed Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_49 Function: lendingTarget
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_49

Name: TMP_49 Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_49(uint256) = REF_5 (c)+ REF_6
XXXXX
TMP_50(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(REF_4,TMP_49)
Function name: lendingTarget
Internal call...
min
REF_4
TMP_49
Function: min
ic
Internal cal param_cache
Param: 0
    num: []
    den: []
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: min
Function Visibility: internal
clearning node...
clearing ir...?
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
has variable
[i] a cleared
clearing ir...?
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
has variable
[i] b cleared
typecheckig node...
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
Function name: min
Phi
[i]Type for a

Name: a Function: min
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
Function name: min
Phi
[i]Type for b

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_48(bool) = a_1 > b_1
has variable
[i] TMP_48 cleared
clearing ir...?
CONDITION TMP_48
typecheckig node...
TMP_48(bool) = a_1 > b_1
Function name: min
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_48 Function: min
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_48

Name: TMP_48 Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_48(bool) = a_1 > b_1
XXXXX
CONDITION TMP_48
Condition...
Conidtion: 
TMP_48
TMP_48
clearning node...
clearing ir...?
RETURN a_1
typecheckig node...
RETURN a_1
RETURN

Name: a Function: min
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
typecheckig node...
RETURN b_1
RETURN

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
WORKLIST iteration 0 for function call "min":
 New undefined nodes- 1
 Old undefined nodes- 0
typecheckig node...
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
Function name: min
Phi
[i]Type for a

Name: a Function: min
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
Function name: min
Phi
[i]Type for b

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_48(bool) = a_1 > b_1
Function name: min
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_48 Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_48

Name: TMP_48 Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_48(bool) = a_1 > b_1
XXXXX
CONDITION TMP_48
Condition...
Conidtion: 
TMP_48
TMP_48
typecheckig node...
RETURN a_1
RETURN

Name: a Function: min
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
typecheckig node...
RETURN b_1
RETURN

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
WORKLIST iteration 1 for function call "min":
 New undefined nodes- 1
 Old undefined nodes- 1
Saving return values for: min

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
___
Check copy_toekn_tuple
([-1], [-1], 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256
[i]Type for TMP_50

Name: TMP_50 Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_50(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(REF_4,TMP_49)
XXXXX
RETURN TMP_50
RETURN

Name: TMP_50 Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
WORKLIST iteration 0 for function call "lendingTarget":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: lendingTarget

Name: TMP_50 Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
___
[i]Type for TMP_84

Name: TMP_84 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_64(uint256) -> bondMeta_1 (-> []).buyingSpeed
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
buyingSpeed
getUpdatedHourlyYield
bondMeta Fields:
yieldAccumulator
^^^
[i]Type for REF_64

Name: bondMeta.buyingSpeed Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bondMeta.buyingSpeed Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: buyingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_65(uint256) -> bondMeta_1 (-> []).withdrawingSpeed
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
withdrawingSpeed
getUpdatedHourlyYield
bondMeta Fields:
buyingSpeed
yieldAccumulator
^^^
[i]Type for REF_65

Name: bondMeta.withdrawingSpeed Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bondMeta.withdrawingSpeed Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: withdrawingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_85(uint256) = INTERNAL_CALL, BaseLending.updatedYieldFP(uint256,uint256,uint256,uint256,uint256,uint256,uint256)(REF_61,REF_62,REF_63,TMP_84,REF_64,REF_65,_maxHourlyYieldFP_1)
Function name: getUpdatedHourlyYield
Internal call...
updatedYieldFP
REF_61
REF_62
REF_63
TMP_84
REF_64
REF_65
_maxHourlyYieldFP
Function: updatedYieldFP
ic
Internal cal param_cache
Param: 0
    num: []
    den: []
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 2
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 3
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 4
    num: []
    den: []
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 5
    num: []
    den: []
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 6
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: updatedYieldFP
Function Visibility: internal
clearning node...
clearing ir...?
_yieldFP_1(uint256) := ϕ(['REF_61'])
has variable
[i] _yieldFP cleared
clearing ir...?
lastUpdated_1(uint256) := ϕ(['REF_62'])
has variable
[i] lastUpdated cleared
clearing ir...?
totalLendingInBucket_1(uint256) := ϕ(['REF_63'])
has variable
[i] totalLendingInBucket cleared
clearing ir...?
bucketTarget_1(uint256) := ϕ(['TMP_84'])
has variable
[i] bucketTarget cleared
clearing ir...?
buyingSpeed_1(uint256) := ϕ(['REF_64'])
has variable
[i] buyingSpeed cleared
clearing ir...?
withdrawingSpeed_1(uint256) := ϕ(['REF_65'])
has variable
[i] withdrawingSpeed cleared
clearing ir...?
bucketMaxYield_1(uint256) := ϕ(['_maxHourlyYieldFP_1'])
has variable
[i] bucketMaxYield cleared
clearing ir...?
yieldChangePerSecondFP_1(uint256) := ϕ(['yieldChangePerSecondFP_0', 'yieldChangePerSecondFP_2'])
has variable
typecheckig node...
_yieldFP_1(uint256) := ϕ(['REF_61'])
Function name: updatedYieldFP
Phi
[i]Type for _yieldFP

Name: _yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
lastUpdated_1(uint256) := ϕ(['REF_62'])
Function name: updatedYieldFP
Phi
[i]Type for lastUpdated

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
totalLendingInBucket_1(uint256) := ϕ(['REF_63'])
Function name: updatedYieldFP
Phi
[i]Type for totalLendingInBucket

Name: totalLendingInBucket Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bucketTarget_1(uint256) := ϕ(['TMP_84'])
Function name: updatedYieldFP
Phi
[i]Type for bucketTarget

Name: bucketTarget Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
buyingSpeed_1(uint256) := ϕ(['REF_64'])
Function name: updatedYieldFP
Phi
[i]Type for buyingSpeed

Name: buyingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
withdrawingSpeed_1(uint256) := ϕ(['REF_65'])
Function name: updatedYieldFP
Phi
[i]Type for withdrawingSpeed

Name: withdrawingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bucketMaxYield_1(uint256) := ϕ(['_maxHourlyYieldFP_1'])
Function name: updatedYieldFP
Phi
[i]Type for bucketMaxYield

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldChangePerSecondFP_1(uint256) := ϕ(['yieldChangePerSecondFP_0', 'yieldChangePerSecondFP_2'])
Function name: updatedYieldFP
Phi
[i]Type for yieldChangePerSecondFP

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
yieldFP_1(uint256) := _yieldFP_1(uint256)
has variable
[i] yieldFP cleared
typecheckig node...
yieldFP_1(uint256) := _yieldFP_1(uint256)
Function name: updatedYieldFP
asgn

Name: _yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
yieldFP_1(uint256) := _yieldFP_1(uint256)
XXXXX
clearning node...
clearing ir...?
TMP_29(uint256) = block.timestamp (c)- lastUpdated_1
has variable
[i] TMP_29 cleared
clearing ir...?
timeDiff_1(uint256) := TMP_29(uint256)
has variable
[i] timeDiff cleared
typecheckig node...
TMP_29(uint256) = block.timestamp (c)- lastUpdated_1
Function name: updatedYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_7 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_29 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_29

Name: TMP_29 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDiff_1(uint256) := TMP_29(uint256)
Function name: updatedYieldFP
asgn

Name: TMP_29 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDiff Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDiff

Name: timeDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_30(uint256) = timeDiff_1 (c)* yieldChangePerSecondFP_1
has variable
[i] TMP_30 cleared
clearing ir...?
yieldDiff_1(uint256) := TMP_30(uint256)
has variable
[i] yieldDiff cleared
typecheckig node...
TMP_30(uint256) = timeDiff_1 (c)* yieldChangePerSecondFP_1
Function name: updatedYieldFP
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_30 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_30

Name: TMP_30 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldDiff_1(uint256) := TMP_30(uint256)
Function name: updatedYieldFP
asgn

Name: TMP_30 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldDiff Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldDiff

Name: yieldDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_31(bool) = totalLendingInBucket_1 >= bucketTarget_1
has variable
[i] TMP_31 cleared
clearing ir...?
TMP_32(bool) = buyingSpeed_1 >= withdrawingSpeed_1
has variable
[i] TMP_32 cleared
clearing ir...?
TMP_33(bool) = TMP_31 || TMP_32
has variable
[i] TMP_33 cleared
clearing ir...?
CONDITION TMP_33
typecheckig node...
TMP_31(bool) = totalLendingInBucket_1 >= bucketTarget_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for TMP_31

Name: TMP_31 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_32(bool) = buyingSpeed_1 >= withdrawingSpeed_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: withdrawingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_32 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_32

Name: TMP_32 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_32(bool) = buyingSpeed_1 >= withdrawingSpeed_1
XXXXX
TMP_33(bool) = TMP_31 || TMP_32
Function name: updatedYieldFP
[i]Type for TMP_33

Name: TMP_33 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_33
Condition...
Conidtion: 
TMP_33
TMP_33
clearning node...
clearing ir...?
yieldFP_2(uint256) = yieldFP_1 (c)+ yieldDiff_1
has variable
[i] yieldFP cleared
typecheckig node...
yieldFP_2(uint256) = yieldFP_1 (c)+ yieldDiff_1
Function name: updatedYieldFP

Name: yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
yieldFP_2(uint256) = yieldFP_1 (c)+ yieldDiff_1
XXXXX
clearning node...
clearing ir...?
TMP_34(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(yieldFP_1,yieldDiff_1)
has variable
[i] TMP_34 cleared
clearing ir...?
yieldFP_4(uint256) = yieldFP_1 (c)- TMP_34
has variable
[i] yieldFP cleared
typecheckig node...
TMP_34(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(yieldFP_1,yieldDiff_1)
Function name: updatedYieldFP
Internal call...
min
yieldFP
yieldDiff
Function: min
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: min
Function Visibility: internal
clearning node...
clearing ir...?
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
has variable
[i] a cleared
clearing ir...?
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
has variable
[i] b cleared
typecheckig node...
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
Function name: min
Phi
[i]Type for a

Name: a Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
Function name: min
Phi
[i]Type for b

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_48(bool) = a_1 > b_1
has variable
[i] TMP_48 cleared
clearing ir...?
CONDITION TMP_48
typecheckig node...
TMP_48(bool) = a_1 > b_1
Function name: min
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_48

Name: TMP_48 Function: min
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_48
Condition...
Conidtion: 
TMP_48
TMP_48
clearning node...
clearing ir...?
RETURN a_1
typecheckig node...
RETURN a_1
RETURN

Name: a Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
typecheckig node...
RETURN b_1
RETURN

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
WORKLIST iteration 0 for function call "min":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: min

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
___
Check copy_toekn_tuple
([-1], [-1], 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256
[i]Type for TMP_34

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldFP_4(uint256) = yieldFP_1 (c)- TMP_34
Function name: updatedYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_35(bool) = yieldFP_2 > bucketMaxYield_1
has variable
[i] TMP_35 cleared
clearing ir...?
CONDITION TMP_35
typecheckig node...
TMP_35(bool) = yieldFP_2 > bucketMaxYield_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_35

Name: TMP_35 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_35
Condition...
Conidtion: 
TMP_35
TMP_35
clearning node...
typecheckig node...
clearning node...
typecheckig node...
clearning node...
clearing ir...?
yieldFP_3(uint256) := bucketMaxYield_1(uint256)
has variable
[i] yieldFP cleared
typecheckig node...
yieldFP_3(uint256) := bucketMaxYield_1(uint256)
Function name: updatedYieldFP
asgn

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 0 for function call "updatedYieldFP":
 New undefined nodes- 3
 Old undefined nodes- 0
typecheckig node...
_yieldFP_1(uint256) := ϕ(['REF_61'])
Function name: updatedYieldFP
Phi
[i]Type for _yieldFP

Name: _yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
lastUpdated_1(uint256) := ϕ(['REF_62'])
Function name: updatedYieldFP
Phi
[i]Type for lastUpdated

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
totalLendingInBucket_1(uint256) := ϕ(['REF_63'])
Function name: updatedYieldFP
Phi
[i]Type for totalLendingInBucket

Name: totalLendingInBucket Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bucketTarget_1(uint256) := ϕ(['TMP_84'])
Function name: updatedYieldFP
Phi
[i]Type for bucketTarget

Name: bucketTarget Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
buyingSpeed_1(uint256) := ϕ(['REF_64'])
Function name: updatedYieldFP
Phi
[i]Type for buyingSpeed

Name: buyingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
withdrawingSpeed_1(uint256) := ϕ(['REF_65'])
Function name: updatedYieldFP
Phi
[i]Type for withdrawingSpeed

Name: withdrawingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bucketMaxYield_1(uint256) := ϕ(['_maxHourlyYieldFP_1'])
Function name: updatedYieldFP
Phi
[i]Type for bucketMaxYield

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldChangePerSecondFP_1(uint256) := ϕ(['yieldChangePerSecondFP_0', 'yieldChangePerSecondFP_2'])
Function name: updatedYieldFP
Phi
[i]Type for yieldChangePerSecondFP

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
yieldFP_1(uint256) := _yieldFP_1(uint256)
Function name: updatedYieldFP
asgn

Name: _yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
yieldFP_1(uint256) := _yieldFP_1(uint256)
XXXXX
typecheckig node...
TMP_29(uint256) = block.timestamp (c)- lastUpdated_1
Function name: updatedYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_9 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_29 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_29

Name: TMP_29 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDiff_1(uint256) := TMP_29(uint256)
Function name: updatedYieldFP
asgn

Name: TMP_29 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDiff

Name: timeDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_30(uint256) = timeDiff_1 (c)* yieldChangePerSecondFP_1
Function name: updatedYieldFP
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_30 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_30

Name: TMP_30 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldDiff_1(uint256) := TMP_30(uint256)
Function name: updatedYieldFP
asgn

Name: TMP_30 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldDiff

Name: yieldDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_31(bool) = totalLendingInBucket_1 >= bucketTarget_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for TMP_31

Name: TMP_31 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_32(bool) = buyingSpeed_1 >= withdrawingSpeed_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: withdrawingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_32 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_32

Name: TMP_32 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_32(bool) = buyingSpeed_1 >= withdrawingSpeed_1
XXXXX
TMP_33(bool) = TMP_31 || TMP_32
Function name: updatedYieldFP
[i]Type for TMP_33

Name: TMP_33 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_33
Condition...
Conidtion: 
TMP_33
TMP_33
typecheckig node...
yieldFP_2(uint256) = yieldFP_1 (c)+ yieldDiff_1
Function name: updatedYieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_34(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(yieldFP_1,yieldDiff_1)
Function name: updatedYieldFP
Internal call...
min
yieldFP
yieldDiff
Function: min
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: min
Function Visibility: internal
clearning node...
clearing ir...?
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
has variable
[i] a cleared
clearing ir...?
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
has variable
[i] b cleared
typecheckig node...
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
Function name: min
Phi
[i]Type for a

Name: a Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
Function name: min
Phi
[i]Type for b

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_48(bool) = a_1 > b_1
has variable
[i] TMP_48 cleared
clearing ir...?
CONDITION TMP_48
typecheckig node...
TMP_48(bool) = a_1 > b_1
Function name: min
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_48

Name: TMP_48 Function: min
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_48
Condition...
Conidtion: 
TMP_48
TMP_48
clearning node...
clearing ir...?
RETURN a_1
typecheckig node...
RETURN a_1
RETURN

Name: a Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
typecheckig node...
RETURN b_1
RETURN

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
WORKLIST iteration 0 for function call "min":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: min

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
___
Check copy_toekn_tuple
([-1], [-1], 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256
[i]Type for TMP_34

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldFP_4(uint256) = yieldFP_1 (c)- TMP_34
Function name: updatedYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_35(bool) = yieldFP_2 > bucketMaxYield_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_35

Name: TMP_35 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_35
Condition...
Conidtion: 
TMP_35
TMP_35
typecheckig node...
typecheckig node...
typecheckig node...
yieldFP_3(uint256) := bucketMaxYield_1(uint256)
Function name: updatedYieldFP
asgn

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 1 for function call "updatedYieldFP":
 New undefined nodes- 2
 Old undefined nodes- 3
typecheckig node...
_yieldFP_1(uint256) := ϕ(['REF_61'])
Function name: updatedYieldFP
Phi
[i]Type for _yieldFP

Name: _yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
lastUpdated_1(uint256) := ϕ(['REF_62'])
Function name: updatedYieldFP
Phi
[i]Type for lastUpdated

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
totalLendingInBucket_1(uint256) := ϕ(['REF_63'])
Function name: updatedYieldFP
Phi
[i]Type for totalLendingInBucket

Name: totalLendingInBucket Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bucketTarget_1(uint256) := ϕ(['TMP_84'])
Function name: updatedYieldFP
Phi
[i]Type for bucketTarget

Name: bucketTarget Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
buyingSpeed_1(uint256) := ϕ(['REF_64'])
Function name: updatedYieldFP
Phi
[i]Type for buyingSpeed

Name: buyingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
withdrawingSpeed_1(uint256) := ϕ(['REF_65'])
Function name: updatedYieldFP
Phi
[i]Type for withdrawingSpeed

Name: withdrawingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bucketMaxYield_1(uint256) := ϕ(['_maxHourlyYieldFP_1'])
Function name: updatedYieldFP
Phi
[i]Type for bucketMaxYield

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldChangePerSecondFP_1(uint256) := ϕ(['yieldChangePerSecondFP_0', 'yieldChangePerSecondFP_2'])
Function name: updatedYieldFP
Phi
[i]Type for yieldChangePerSecondFP

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
yieldFP_1(uint256) := _yieldFP_1(uint256)
Function name: updatedYieldFP
asgn

Name: _yieldFP Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
yieldFP_1(uint256) := _yieldFP_1(uint256)
XXXXX
typecheckig node...
TMP_29(uint256) = block.timestamp (c)- lastUpdated_1
Function name: updatedYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_11 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_29 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_29

Name: TMP_29 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDiff_1(uint256) := TMP_29(uint256)
Function name: updatedYieldFP
asgn

Name: TMP_29 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDiff

Name: timeDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_30(uint256) = timeDiff_1 (c)* yieldChangePerSecondFP_1
Function name: updatedYieldFP
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_30 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_30

Name: TMP_30 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldDiff_1(uint256) := TMP_30(uint256)
Function name: updatedYieldFP
asgn

Name: TMP_30 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldDiff

Name: yieldDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_31(bool) = totalLendingInBucket_1 >= bucketTarget_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for TMP_31

Name: TMP_31 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_32(bool) = buyingSpeed_1 >= withdrawingSpeed_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: withdrawingSpeed Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_32 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_32

Name: TMP_32 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_32(bool) = buyingSpeed_1 >= withdrawingSpeed_1
XXXXX
TMP_33(bool) = TMP_31 || TMP_32
Function name: updatedYieldFP
[i]Type for TMP_33

Name: TMP_33 Function: updatedYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_33
Condition...
Conidtion: 
TMP_33
TMP_33
typecheckig node...
yieldFP_2(uint256) = yieldFP_1 (c)+ yieldDiff_1
Function name: updatedYieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldDiff Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_34(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(yieldFP_1,yieldDiff_1)
Function name: updatedYieldFP
Internal call...
min
yieldFP
yieldDiff
Function: min
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: min
Function Visibility: internal
clearning node...
clearing ir...?
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
has variable
[i] a cleared
clearing ir...?
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
has variable
[i] b cleared
typecheckig node...
a_1(uint256) := ϕ(['yieldFP_1', 'REF_4', 'maxHourlyYieldFP_3'])
Function name: min
Phi
[i]Type for a

Name: a Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
b_1(uint256) := ϕ(['TMP_49', 'yieldDiff_1', 'yieldGeneratedFP_1'])
Function name: min
Phi
[i]Type for b

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
TMP_48(bool) = a_1 > b_1
has variable
[i] TMP_48 cleared
clearing ir...?
CONDITION TMP_48
typecheckig node...
TMP_48(bool) = a_1 > b_1
Function name: min
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_48

Name: TMP_48 Function: min
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_48
Condition...
Conidtion: 
TMP_48
TMP_48
clearning node...
clearing ir...?
RETURN a_1
typecheckig node...
RETURN a_1
RETURN

Name: a Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
typecheckig node...
RETURN b_1
RETURN

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
WORKLIST iteration 0 for function call "min":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: min

Name: b Function: min
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
___
Check copy_toekn_tuple
([-1], [-1], 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256
[i]Type for TMP_34

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldFP_4(uint256) = yieldFP_1 (c)- TMP_34
Function name: updatedYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_34 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_35(bool) = yieldFP_2 > bucketMaxYield_1
Function name: updatedYieldFP
testing gt...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_35

Name: TMP_35 Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_35
Condition...
Conidtion: 
TMP_35
TMP_35
typecheckig node...
typecheckig node...
typecheckig node...
yieldFP_3(uint256) := bucketMaxYield_1(uint256)
Function name: updatedYieldFP
asgn

Name: bucketMaxYield Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldFP

Name: yieldFP Function: updatedYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 2 for function call "updatedYieldFP":
 New undefined nodes- 2
 Old undefined nodes- 2
Saving return values for: updatedYieldFP

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
___
[i]Type for TMP_85

Name: TMP_85 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_85(uint256) = INTERNAL_CALL, BaseLending.updatedYieldFP(uint256,uint256,uint256,uint256,uint256,uint256,uint256)(REF_61,REF_62,REF_63,TMP_84,REF_64,REF_65,_maxHourlyYieldFP_1)
XXXXX
accumulator_3 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_2 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, accumulatorFP
Finance Type: undef
done.
REF_60 (->accumulator_3 (-> ['bondMeta'])) := TMP_85(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_85 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_60 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for REF_60

Name: REF_60 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_60 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_60 (->accumulator_3 (-> ['bondMeta'])) := TMP_85(uint256)
XXXXX
bondMeta_3 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_3 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_66(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).lastUpdated
has variable
clearing ir...?
TMP_86(uint256) = block.timestamp (c)- REF_66
has variable
[i] TMP_86 cleared
clearing ir...?
timeDelta_2(uint256) := TMP_86(uint256)
has variable
[i] timeDelta cleared
typecheckig node...
REF_66(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
lastUpdated
getUpdatedHourlyYield
borrowAccumulator Fields:
hourlyYieldFP
^^^
[i]Type for REF_66

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_86(uint256) = block.timestamp (c)- REF_66
Function name: getUpdatedHourlyYield
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_14 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: PIC_14 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_86 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_86

Name: TMP_86 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_86(uint256) = block.timestamp (c)- REF_66
XXXXX
timeDelta_2(uint256) := TMP_86(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_86 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_67(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).accumulatorFP
has variable
clearing ir...?
TMP_87(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(borrowAccumulator_1 (-> ['borrowYieldAccumulators']),timeDelta_2)
has variable
[i] TMP_87 cleared
clearing ir...?
borrowAccumulator_2 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_1 (-> ['borrowYieldAccumulators'])"])
has variable
[i] borrowAccumulator cleared
clearing ir...?
REF_67 (->borrowAccumulator_2 (-> ['borrowYieldAccumulators'])) := TMP_87(uint256)
has variable
clearing ir...?
borrowYieldAccumulators_3(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_2 (-> ['borrowYieldAccumulators'])"])
has variable
typecheckig node...
REF_67(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).accumulatorFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
accumulatorFP
getUpdatedHourlyYield
borrowAccumulator Fields:
hourlyYieldFP
lastUpdated
^^^
[i]Type for REF_67

Name: borrowAccumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_87(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(borrowAccumulator_1 (-> ['borrowYieldAccumulators']),timeDelta_2)
Function name: getUpdatedHourlyYield
Internal call...
calcCumulativeYieldFP
borrowAccumulator
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [hourlyYieldFP, lastUpdated]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_87 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_87

Name: TMP_87 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
borrowAccumulator_2 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_1 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
REF_67 (->borrowAccumulator_2 (-> ['borrowYieldAccumulators'])) := TMP_87(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_87 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_67 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for REF_67

Name: REF_67 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_67 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_3(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_2 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_68(uint256) -> borrowAccumulator_2 (-> ['borrowYieldAccumulators']).hourlyYieldFP
has variable
clearing ir...?
REF_69(uint256) -> accumulator_3 (-> ['bondMeta']).hourlyYieldFP
has variable
clearing ir...?
TMP_88(uint256) = borrowingFactorPercent_6 (c)* REF_69
has variable
[i] TMP_88 cleared
clearing ir...?
TMP_89(uint256) = TMP_88 (c)/ 100
has variable
[i] TMP_89 cleared
clearing ir...?
TMP_90(uint256) = 1 (c)+ TMP_89
has variable
[i] TMP_90 cleared
clearing ir...?
borrowAccumulator_3 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_2 (-> ['borrowYieldAccumulators'])"])
has variable
[i] borrowAccumulator cleared
clearing ir...?
REF_68 (->borrowAccumulator_3 (-> ['borrowYieldAccumulators'])) := TMP_90(uint256)
has variable
clearing ir...?
borrowYieldAccumulators_4(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_3 (-> ['borrowYieldAccumulators'])"])
has variable
typecheckig node...
REF_68(uint256) -> borrowAccumulator_2 (-> ['borrowYieldAccumulators']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
hourlyYieldFP
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
^^^
Check copy_toekn_tuple
([-1], [-1], 'u', None)
----
Type: uint256
uint256
Final Type: uint256
Check copy_toekn_tuple
([-1], [-1], 'u', None)
----
Type: None
None
Final Type: None
[i]Type for REF_68

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_69(uint256) -> accumulator_3 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_69

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_88(uint256) = borrowingFactorPercent_6 (c)* REF_69
Function name: getUpdatedHourlyYield
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_88 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_88

Name: TMP_88 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_89(uint256) = TMP_88 (c)/ 100
Function name: getUpdatedHourlyYield
val: 100
2
val: 100
2
lnorm: u rnorm: 2
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_89 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: -2
LF: None
Fields: 
Finance Type: undef
val: 100
2
[i]Type for TMP_89

Name: TMP_89 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: -2
LF: None
Fields: 
Finance Type: undef
done.
TMP_90(uint256) = 1 (c)+ TMP_89
Function name: getUpdatedHourlyYield
val: 1

Name: TMP_90 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 1
lnorm: 0 rnorm: -2
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_89 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: -2
LF: None
Fields: 
Finance Type: undef

Name: TMP_90 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_90

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
borrowAccumulator_3 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_2 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, accumulatorFP
Finance Type: undef
done.
REF_68 (->borrowAccumulator_3 (-> ['borrowYieldAccumulators'])) := TMP_90(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for REF_68

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_4(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_3 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_70(uint256) -> accumulator_3 (-> ['bondMeta']).lastUpdated
has variable
clearing ir...?
accumulator_4 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_3 (-> ['bondMeta'])"])
has variable
[i] accumulator cleared
clearing ir...?
REF_70 (->accumulator_4 (-> ['bondMeta'])) := block.timestamp(uint256)
has variable
clearing ir...?
bondMeta_4 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_4 (-> ['bondMeta'])"])
has variable
[i] bondMeta cleared
typecheckig node...
REF_70(uint256) -> accumulator_3 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
accumulatorFP
^^^
Check copy_toekn_tuple
([-1], [-1], 'u', None)
----
Type: uint256
uint256
Final Type: uint256
Check copy_toekn_tuple
([-1], [-1], 'u', None)
----
Type: None
None
Final Type: None
[i]Type for REF_70

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
accumulator_4 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_3 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: lastUpdated, hourlyYieldFP, accumulatorFP
Finance Type: undef
done.
REF_70 (->accumulator_4 (-> ['bondMeta'])) := block.timestamp(uint256)
Function name: getUpdatedHourlyYield
asgn
block.timestamp

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
not variable
u
[i]Type for REF_70

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_70 (->accumulator_4 (-> ['bondMeta'])) := block.timestamp(uint256)
XXXXX
bondMeta_4 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_4 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_71(uint256) -> borrowAccumulator_3 (-> ['borrowYieldAccumulators']).lastUpdated
has variable
clearing ir...?
borrowAccumulator_4 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_3 (-> ['borrowYieldAccumulators'])"])
has variable
[i] borrowAccumulator cleared
clearing ir...?
REF_71 (->borrowAccumulator_4 (-> ['borrowYieldAccumulators'])) := block.timestamp(uint256)
has variable
clearing ir...?
borrowYieldAccumulators_5(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_4 (-> ['borrowYieldAccumulators'])"])
has variable
typecheckig node...
REF_71(uint256) -> borrowAccumulator_3 (-> ['borrowYieldAccumulators']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
lastUpdated
getUpdatedHourlyYield
borrowAccumulator Fields:
hourlyYieldFP
accumulatorFP
^^^
Check copy_toekn_tuple
([-1], [-1], 'u', None)
----
Type: uint256
uint256
Final Type: uint256
Check copy_toekn_tuple
([-1], [-1], 'u', None)
----
Type: None
None
Final Type: None
[i]Type for REF_71

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowAccumulator_4 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_3 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: lastUpdated, hourlyYieldFP, accumulatorFP
Finance Type: undef
done.
REF_71 (->borrowAccumulator_4 (-> ['borrowYieldAccumulators'])) := block.timestamp(uint256)
Function name: getUpdatedHourlyYield
asgn
block.timestamp

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
not variable
u
[i]Type for REF_71

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_71 (->borrowAccumulator_4 (-> ['borrowYieldAccumulators'])) := block.timestamp(uint256)
XXXXX
borrowYieldAccumulators_5(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_4 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 0 for function call "getUpdatedHourlyYield":
 New undefined nodes- 8
 Old undefined nodes- 0
typecheckig node...
issuer_1(address) := ϕ(['issuer_1'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for issuer

Name: issuer Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: issuer
Fields: 
Finance Type: undef
done.
bondMeta_1 (-> [])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(['REF_23'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: buyingSpeed, withdrawingSpeed, yieldAccumulator
Finance Type: undef
done.
lendingMeta_11(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_10', 'lendingMeta_8', 'lendingMeta_0', 'lendingMeta_4', 'lendingMeta_1', 'lendingMeta_12'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_1(mapping(address => BaseLending.YieldAccumulator)) := ϕ(['borrowYieldAccumulators_5', 'borrowYieldAccumulators_0'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
maxHourlyYieldFP_2(uint256) := ϕ(['maxHourlyYieldFP_4', 'maxHourlyYieldFP_0', 'maxHourlyYieldFP_1'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for maxHourlyYieldFP

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowingFactorPercent_1(uint256) := ϕ(['borrowingFactorPercent_0', 'borrowingFactorPercent_6'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowingFactorPercent

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_52(BaseLending.YieldAccumulator) -> bondMeta_1 (-> []).yieldAccumulator
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
yieldAccumulator
getUpdatedHourlyYield
bondMeta Fields:
buyingSpeed
withdrawingSpeed
yieldAccumulator
^^^

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
[i]Type for REF_52

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
accumulator_1 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := REF_52(BaseLending.YieldAccumulator)
Function name: getUpdatedHourlyYield
asgn

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: lastUpdated, accumulatorFP
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: lastUpdated, accumulatorFP
Finance Type: undef
done.
typecheckig node...
REF_53(uint256) -> accumulator_1 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_53

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_78(uint256) = block.timestamp (c)- REF_53
Function name: getUpdatedHourlyYield
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_18 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_78 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_78

Name: TMP_78 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDelta_1(uint256) := TMP_78(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_78 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_54(uint256) -> accumulator_1 (-> ['bondMeta']).accumulatorFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
accumulatorFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
[i]Type for REF_54

Name: accumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
TMP_79(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(accumulator_1 (-> ['bondMeta']),timeDelta_1)
Function name: getUpdatedHourlyYield
Internal call...
calcCumulativeYieldFP
accumulator
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [hourlyYieldFP, lastUpdated, <slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_79 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_79

Name: TMP_79 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
accumulator_2 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_1 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
REF_54 (->accumulator_2 (-> ['bondMeta'])) := TMP_79(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_79 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
0
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for REF_54

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
bondMeta_2 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_2 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: buyingSpeed, withdrawingSpeed, yieldAccumulator
Finance Type: undef
done.
typecheckig node...
REF_55(BaseLending.LendingMetadata) -> lendingMeta_12[issuer_1]
Function name: getUpdatedHourlyYield
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
lendingMeta
[i]Type for REF_55

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_55(BaseLending.LendingMetadata) -> lendingMeta_12[issuer_1]
XXXXX
meta_1 (-> ['lendingMeta'])(BaseLending.LendingMetadata) := REF_55(BaseLending.LendingMetadata)
Function name: getUpdatedHourlyYield
asgn

Name: REF_55 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalBorrowed, totalLending
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for meta

Name: meta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalBorrowed, totalLending
Finance Type: undef
done.
typecheckig node...
REF_56(BaseLending.YieldAccumulator) -> borrowYieldAccumulators_2[issuer_1]
Function name: getUpdatedHourlyYield
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
borrowYieldAccumulators
[i]Type for REF_56

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_56(BaseLending.YieldAccumulator) -> borrowYieldAccumulators_2[issuer_1]
XXXXX
borrowAccumulator_1 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := REF_56(BaseLending.YieldAccumulator)
Function name: getUpdatedHourlyYield
asgn

Name: REF_56 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated
Finance Type: undef
done.
typecheckig node...
REF_57(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
hourlyYieldFP
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_57

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_58(uint256) -> meta_1 (-> ['lendingMeta']).totalBorrowed
Function name: getUpdatedHourlyYield
MEMBER
meta
totalBorrowed
getUpdatedHourlyYield
meta Fields:
totalBorrowed
totalLending
^^^

Name: totalBorrowed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_58

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalBorrowed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_80(uint256) = REF_57 (c)* REF_58
Function name: getUpdatedHourlyYield
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_80 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_80

Name: TMP_80 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_59(uint256) -> meta_1 (-> ['lendingMeta']).totalLending
Function name: getUpdatedHourlyYield
MEMBER
meta
totalLending
getUpdatedHourlyYield
meta Fields:
totalBorrowed
totalLending
^^^

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_59

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_81(uint256) = 1 (c)+ REF_59
Function name: getUpdatedHourlyYield
val: 1

Name: TMP_81 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 1
lnorm: 0 rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_81 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_81

Name: TMP_81 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
TMP_82(uint256) = TMP_80 (c)/ TMP_81
Function name: getUpdatedHourlyYield
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_82 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_82

Name: TMP_82 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
yieldGeneratedFP_1(uint256) := TMP_82(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_82 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: yieldGeneratedFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldGeneratedFP

Name: yieldGeneratedFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_83(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(maxHourlyYieldFP_3,yieldGeneratedFP_1)
Function name: getUpdatedHourlyYield
Internal call...
min
maxHourlyYieldFP
yieldGeneratedFP
Function: min
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: -1
0
0
[i]Type for TMP_83

Name: TMP_83 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
_maxHourlyYieldFP_1(uint256) := TMP_83(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_83 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: _maxHourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for _maxHourlyYieldFP

Name: _maxHourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_60(uint256) -> accumulator_2 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_60

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_61(uint256) -> accumulator_2 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_61

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_62(uint256) -> accumulator_2 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_62

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_63(uint256) -> meta_1 (-> ['lendingMeta']).totalLending
Function name: getUpdatedHourlyYield
MEMBER
meta
totalLending
getUpdatedHourlyYield
meta Fields:
totalBorrowed
totalLending
^^^

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_63

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_84(uint256) = INTERNAL_CALL, BaseLending.lendingTarget(BaseLending.LendingMetadata)(meta_1 (-> ['lendingMeta']))
Function name: getUpdatedHourlyYield
Internal call...
lendingTarget
meta
Function: lendingTarget
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [totalBorrowed, totalLending]
    fintype: -1
0
0

Name: TMP_50 Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_84 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_84

Name: TMP_84 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_64(uint256) -> bondMeta_1 (-> []).buyingSpeed
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
buyingSpeed
getUpdatedHourlyYield
bondMeta Fields:
buyingSpeed
withdrawingSpeed
yieldAccumulator
^^^

Name: buyingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_64

Name: bondMeta.buyingSpeed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bondMeta.buyingSpeed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: buyingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_65(uint256) -> bondMeta_1 (-> []).withdrawingSpeed
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
withdrawingSpeed
getUpdatedHourlyYield
bondMeta Fields:
buyingSpeed
withdrawingSpeed
yieldAccumulator
^^^

Name: withdrawingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_65

Name: bondMeta.withdrawingSpeed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bondMeta.withdrawingSpeed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: withdrawingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_85(uint256) = INTERNAL_CALL, BaseLending.updatedYieldFP(uint256,uint256,uint256,uint256,uint256,uint256,uint256)(REF_61,REF_62,REF_63,TMP_84,REF_64,REF_65,_maxHourlyYieldFP_1)
Function name: getUpdatedHourlyYield
Internal call...
updatedYieldFP
REF_61
REF_62
REF_63
TMP_84
REF_64
REF_65
_maxHourlyYieldFP
Function: updatedYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 2
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 3
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 4
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 5
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 6
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: yieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_85 Function: getUpdatedHourlyYield
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_85

Name: TMP_85 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
accumulator_3 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_2 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
REF_60 (->accumulator_3 (-> ['bondMeta'])) := TMP_85(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_85 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_60 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for REF_60

Name: REF_60 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_60 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bondMeta_3 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_3 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: buyingSpeed, withdrawingSpeed, yieldAccumulator
Finance Type: undef
done.
typecheckig node...
REF_66(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
lastUpdated
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_66

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_86(uint256) = block.timestamp (c)- REF_66
Function name: getUpdatedHourlyYield
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_19 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_86 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_86

Name: TMP_86 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDelta_2(uint256) := TMP_86(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_86 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_67(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).accumulatorFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
accumulatorFP
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_67

Name: borrowAccumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_87(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(borrowAccumulator_1 (-> ['borrowYieldAccumulators']),timeDelta_2)
Function name: getUpdatedHourlyYield
Internal call...
calcCumulativeYieldFP
borrowAccumulator
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [accumulatorFP, hourlyYieldFP, lastUpdated]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_87 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_87

Name: TMP_87 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
borrowAccumulator_2 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_1 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP, hourlyYieldFP, lastUpdated
Finance Type: undef
done.
REF_67 (->borrowAccumulator_2 (-> ['borrowYieldAccumulators'])) := TMP_87(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_87 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_67 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
u
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for REF_67

Name: REF_67 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_67 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_3(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_2 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_68(uint256) -> borrowAccumulator_2 (-> ['borrowYieldAccumulators']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
hourlyYieldFP
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_68

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_69(uint256) -> accumulator_3 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_69

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_88(uint256) = borrowingFactorPercent_6 (c)* REF_69
Function name: getUpdatedHourlyYield
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_88 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_88

Name: TMP_88 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_89(uint256) = TMP_88 (c)/ 100
Function name: getUpdatedHourlyYield
val: 100
2
val: 100
2
lnorm: u rnorm: 2
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_89 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: -2
LF: None
Fields: 
Finance Type: undef
val: 100
2
[i]Type for TMP_89

Name: TMP_89 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: -2
LF: None
Fields: 
Finance Type: undef
done.
TMP_90(uint256) = 1 (c)+ TMP_89
Function name: getUpdatedHourlyYield
val: 1

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 1
lnorm: 0 rnorm: -2
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_89 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: -2
LF: None
Fields: 
Finance Type: undef

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_90

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
borrowAccumulator_3 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_2 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP, hourlyYieldFP, lastUpdated
Finance Type: undef
done.
REF_68 (->borrowAccumulator_3 (-> ['borrowYieldAccumulators'])) := TMP_90(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for REF_68

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_4(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_3 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_70(uint256) -> accumulator_3 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_70

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
accumulator_4 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_3 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
REF_70 (->accumulator_4 (-> ['bondMeta'])) := block.timestamp(uint256)
Function name: getUpdatedHourlyYield
asgn
block.timestamp

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
not variable
u
[i]Type for REF_70

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_70 (->accumulator_4 (-> ['bondMeta'])) := block.timestamp(uint256)
XXXXX
bondMeta_4 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_4 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: buyingSpeed, withdrawingSpeed, yieldAccumulator
Finance Type: undef
done.
typecheckig node...
REF_71(uint256) -> borrowAccumulator_3 (-> ['borrowYieldAccumulators']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
lastUpdated
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_71

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowAccumulator_4 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_3 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP, hourlyYieldFP, lastUpdated
Finance Type: undef
done.
REF_71 (->borrowAccumulator_4 (-> ['borrowYieldAccumulators'])) := block.timestamp(uint256)
Function name: getUpdatedHourlyYield
asgn
block.timestamp

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
not variable
u
[i]Type for REF_71

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_71 (->borrowAccumulator_4 (-> ['borrowYieldAccumulators'])) := block.timestamp(uint256)
XXXXX
borrowYieldAccumulators_5(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_4 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 1 for function call "getUpdatedHourlyYield":
 New undefined nodes- 4
 Old undefined nodes- 8
typecheckig node...
issuer_1(address) := ϕ(['issuer_1'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for issuer

Name: issuer Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: issuer
Fields: 
Finance Type: undef
done.
bondMeta_1 (-> [])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(['REF_23'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: buyingSpeed, withdrawingSpeed, yieldAccumulator
Finance Type: undef
done.
lendingMeta_11(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_10', 'lendingMeta_8', 'lendingMeta_0', 'lendingMeta_4', 'lendingMeta_1', 'lendingMeta_12'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_1(mapping(address => BaseLending.YieldAccumulator)) := ϕ(['borrowYieldAccumulators_5', 'borrowYieldAccumulators_0'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
maxHourlyYieldFP_2(uint256) := ϕ(['maxHourlyYieldFP_4', 'maxHourlyYieldFP_0', 'maxHourlyYieldFP_1'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for maxHourlyYieldFP

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowingFactorPercent_1(uint256) := ϕ(['borrowingFactorPercent_0', 'borrowingFactorPercent_6'])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowingFactorPercent

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_52(BaseLending.YieldAccumulator) -> bondMeta_1 (-> []).yieldAccumulator
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
yieldAccumulator
getUpdatedHourlyYield
bondMeta Fields:
buyingSpeed
withdrawingSpeed
yieldAccumulator
^^^

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
[i]Type for REF_52

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
accumulator_1 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := REF_52(BaseLending.YieldAccumulator)
Function name: getUpdatedHourlyYield
asgn

Name: bondMeta.yieldAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
typecheckig node...
REF_53(uint256) -> accumulator_1 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_53

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_78(uint256) = block.timestamp (c)- REF_53
Function name: getUpdatedHourlyYield
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_20 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_78 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_78

Name: TMP_78 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDelta_1(uint256) := TMP_78(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_78 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_54(uint256) -> accumulator_1 (-> ['bondMeta']).accumulatorFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
accumulatorFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
[i]Type for REF_54

Name: accumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
TMP_79(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(accumulator_1 (-> ['bondMeta']),timeDelta_1)
Function name: getUpdatedHourlyYield
Internal call...
calcCumulativeYieldFP
accumulator
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [hourlyYieldFP, lastUpdated, <slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_79 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_79

Name: TMP_79 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
accumulator_2 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_1 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
REF_54 (->accumulator_2 (-> ['bondMeta'])) := TMP_79(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_79 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
0
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for REF_54

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_54 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
bondMeta_2 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_2 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: buyingSpeed, withdrawingSpeed, yieldAccumulator
Finance Type: undef
done.
typecheckig node...
REF_55(BaseLending.LendingMetadata) -> lendingMeta_12[issuer_1]
Function name: getUpdatedHourlyYield
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
lendingMeta
[i]Type for REF_55

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_55(BaseLending.LendingMetadata) -> lendingMeta_12[issuer_1]
XXXXX
meta_1 (-> ['lendingMeta'])(BaseLending.LendingMetadata) := REF_55(BaseLending.LendingMetadata)
Function name: getUpdatedHourlyYield
asgn

Name: REF_55 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalBorrowed, totalLending
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for meta

Name: meta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalBorrowed, totalLending
Finance Type: undef
done.
typecheckig node...
REF_56(BaseLending.YieldAccumulator) -> borrowYieldAccumulators_2[issuer_1]
Function name: getUpdatedHourlyYield
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
borrowYieldAccumulators
[i]Type for REF_56

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_56(BaseLending.YieldAccumulator) -> borrowYieldAccumulators_2[issuer_1]
XXXXX
borrowAccumulator_1 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := REF_56(BaseLending.YieldAccumulator)
Function name: getUpdatedHourlyYield
asgn

Name: REF_56 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP, hourlyYieldFP, lastUpdated
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP, hourlyYieldFP, lastUpdated
Finance Type: undef
done.
typecheckig node...
REF_57(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
hourlyYieldFP
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_57

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_58(uint256) -> meta_1 (-> ['lendingMeta']).totalBorrowed
Function name: getUpdatedHourlyYield
MEMBER
meta
totalBorrowed
getUpdatedHourlyYield
meta Fields:
totalBorrowed
totalLending
^^^

Name: totalBorrowed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_58

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalBorrowed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_80(uint256) = REF_57 (c)* REF_58
Function name: getUpdatedHourlyYield
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: meta.totalBorrowed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_80 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_80

Name: TMP_80 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_59(uint256) -> meta_1 (-> ['lendingMeta']).totalLending
Function name: getUpdatedHourlyYield
MEMBER
meta
totalLending
getUpdatedHourlyYield
meta Fields:
totalBorrowed
totalLending
^^^

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_59

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_81(uint256) = 1 (c)+ REF_59
Function name: getUpdatedHourlyYield
val: 1

Name: TMP_81 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 1
lnorm: 0 rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_81 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_81

Name: TMP_81 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
TMP_82(uint256) = TMP_80 (c)/ TMP_81
Function name: getUpdatedHourlyYield
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_82 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_82

Name: TMP_82 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
yieldGeneratedFP_1(uint256) := TMP_82(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_82 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: yieldGeneratedFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldGeneratedFP

Name: yieldGeneratedFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_83(uint256) = INTERNAL_CALL, BaseLending.min(uint256,uint256)(maxHourlyYieldFP_3,yieldGeneratedFP_1)
Function name: getUpdatedHourlyYield
Internal call...
min
maxHourlyYieldFP
yieldGeneratedFP
Function: min
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: -1
0
0
[i]Type for TMP_83

Name: TMP_83 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
_maxHourlyYieldFP_1(uint256) := TMP_83(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_83 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: _maxHourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for _maxHourlyYieldFP

Name: _maxHourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_60(uint256) -> accumulator_2 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_60

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_61(uint256) -> accumulator_2 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_61

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_62(uint256) -> accumulator_2 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_62

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_63(uint256) -> meta_1 (-> ['lendingMeta']).totalLending
Function name: getUpdatedHourlyYield
MEMBER
meta
totalLending
getUpdatedHourlyYield
meta Fields:
totalBorrowed
totalLending
^^^

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_63

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: meta.totalLending Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_84(uint256) = INTERNAL_CALL, BaseLending.lendingTarget(BaseLending.LendingMetadata)(meta_1 (-> ['lendingMeta']))
Function name: getUpdatedHourlyYield
Internal call...
lendingTarget
meta
Function: lendingTarget
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [totalBorrowed, totalLending]
    fintype: -1
0
0

Name: TMP_50 Function: lendingTarget
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_84 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_84

Name: TMP_84 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_64(uint256) -> bondMeta_1 (-> []).buyingSpeed
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
buyingSpeed
getUpdatedHourlyYield
bondMeta Fields:
buyingSpeed
withdrawingSpeed
yieldAccumulator
^^^

Name: buyingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_64

Name: bondMeta.buyingSpeed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bondMeta.buyingSpeed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: buyingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_65(uint256) -> bondMeta_1 (-> []).withdrawingSpeed
Function name: getUpdatedHourlyYield
MEMBER
bondMeta
withdrawingSpeed
getUpdatedHourlyYield
bondMeta Fields:
buyingSpeed
withdrawingSpeed
yieldAccumulator
^^^

Name: withdrawingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_65

Name: bondMeta.withdrawingSpeed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bondMeta.withdrawingSpeed Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: withdrawingSpeed Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_85(uint256) = INTERNAL_CALL, BaseLending.updatedYieldFP(uint256,uint256,uint256,uint256,uint256,uint256,uint256)(REF_61,REF_62,REF_63,TMP_84,REF_64,REF_65,_maxHourlyYieldFP_1)
Function name: getUpdatedHourlyYield
Internal call...
updatedYieldFP
REF_61
REF_62
REF_63
TMP_84
REF_64
REF_65
_maxHourlyYieldFP
Function: updatedYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 2
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 3
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 4
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 5
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 6
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: yieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_85 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_85

Name: TMP_85 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
accumulator_3 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_2 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
REF_60 (->accumulator_3 (-> ['bondMeta'])) := TMP_85(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_85 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_60 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for REF_60

Name: REF_60 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_60 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bondMeta_3 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_3 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: buyingSpeed, withdrawingSpeed, yieldAccumulator
Finance Type: undef
done.
typecheckig node...
REF_66(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
lastUpdated
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_66

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_86(uint256) = block.timestamp (c)- REF_66
Function name: getUpdatedHourlyYield
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: PIC_21 Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_86 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_86

Name: TMP_86 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDelta_2(uint256) := TMP_86(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_86 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_67(uint256) -> borrowAccumulator_1 (-> ['borrowYieldAccumulators']).accumulatorFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
accumulatorFP
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_67

Name: borrowAccumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.accumulatorFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_87(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(borrowAccumulator_1 (-> ['borrowYieldAccumulators']),timeDelta_2)
Function name: getUpdatedHourlyYield
Internal call...
calcCumulativeYieldFP
borrowAccumulator
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [accumulatorFP, hourlyYieldFP, lastUpdated]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_87 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_87

Name: TMP_87 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
borrowAccumulator_2 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_1 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP, hourlyYieldFP, lastUpdated
Finance Type: undef
done.
REF_67 (->borrowAccumulator_2 (-> ['borrowYieldAccumulators'])) := TMP_87(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_87 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_67 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
u
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for REF_67

Name: REF_67 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: REF_67 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_3(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_2 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_68(uint256) -> borrowAccumulator_2 (-> ['borrowYieldAccumulators']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
hourlyYieldFP
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_68

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_69(uint256) -> accumulator_3 (-> ['bondMeta']).hourlyYieldFP
Function name: getUpdatedHourlyYield
MEMBER
accumulator
hourlyYieldFP
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_69

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_88(uint256) = borrowingFactorPercent_6 (c)* REF_69
Function name: getUpdatedHourlyYield
testing mul...
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: accumulator.hourlyYieldFP Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_88 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_88

Name: TMP_88 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_89(uint256) = TMP_88 (c)/ 100
Function name: getUpdatedHourlyYield
val: 100
2
val: 100
2
lnorm: u rnorm: 2
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_89 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: -2
LF: None
Fields: 
Finance Type: undef
val: 100
2
[i]Type for TMP_89

Name: TMP_89 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: -2
LF: None
Fields: 
Finance Type: undef
done.
TMP_90(uint256) = 1 (c)+ TMP_89
Function name: getUpdatedHourlyYield
val: 1

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 1
lnorm: 0 rnorm: -2
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: TMP_89 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: -2
LF: None
Fields: 
Finance Type: undef

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_90

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
borrowAccumulator_3 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_2 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP, hourlyYieldFP, lastUpdated
Finance Type: undef
done.
REF_68 (->borrowAccumulator_3 (-> ['borrowYieldAccumulators'])) := TMP_90(uint256)
Function name: getUpdatedHourlyYield
asgn

Name: TMP_90 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for REF_68

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: REF_68 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: hourlyYieldFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowYieldAccumulators_4(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_3 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_70(uint256) -> accumulator_3 (-> ['bondMeta']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
accumulator
lastUpdated
getUpdatedHourlyYield
accumulator Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_70

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
accumulator_4 (-> ['bondMeta'])(BaseLending.YieldAccumulator) := ϕ(["accumulator_3 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for accumulator

Name: accumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
REF_70 (->accumulator_4 (-> ['bondMeta'])) := block.timestamp(uint256)
Function name: getUpdatedHourlyYield
asgn
block.timestamp

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
not variable
u
[i]Type for REF_70

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_70 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_70 (->accumulator_4 (-> ['bondMeta'])) := block.timestamp(uint256)
XXXXX
bondMeta_4 (-> ['bondMeta'])(HourlyBondSubscriptionLending.HourlyBondMetadata) := ϕ(["accumulator_4 (-> ['bondMeta'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for bondMeta

Name: bondMeta Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: buyingSpeed, withdrawingSpeed, yieldAccumulator
Finance Type: undef
done.
typecheckig node...
REF_71(uint256) -> borrowAccumulator_3 (-> ['borrowYieldAccumulators']).lastUpdated
Function name: getUpdatedHourlyYield
MEMBER
borrowAccumulator
lastUpdated
getUpdatedHourlyYield
borrowAccumulator Fields:
accumulatorFP
hourlyYieldFP
lastUpdated
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_71

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: borrowAccumulator.lastUpdated Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
borrowAccumulator_4 (-> ['borrowYieldAccumulators'])(BaseLending.YieldAccumulator) := ϕ(["borrowAccumulator_3 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowAccumulator

Name: borrowAccumulator Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP, hourlyYieldFP, lastUpdated
Finance Type: undef
done.
REF_71 (->borrowAccumulator_4 (-> ['borrowYieldAccumulators'])) := block.timestamp(uint256)
Function name: getUpdatedHourlyYield
asgn
block.timestamp

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
not variable
u
[i]Type for REF_71

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_71 Function: getUpdatedHourlyYield
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_71 (->borrowAccumulator_4 (-> ['borrowYieldAccumulators'])) := block.timestamp(uint256)
XXXXX
borrowYieldAccumulators_5(mapping(address => BaseLending.YieldAccumulator)) := ϕ(["borrowAccumulator_4 (-> ['borrowYieldAccumulators'])"])
Function name: getUpdatedHourlyYield
Phi
[i]Type for borrowYieldAccumulators

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 2 for function call "getUpdatedHourlyYield":
 New undefined nodes- 4
 Old undefined nodes- 4
Saving return values for: getUpdatedHourlyYield

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
___
[i]Type for TMP_55

Name: TMP_55 Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_55(BaseLending.YieldAccumulator) = INTERNAL_CALL, HourlyBondSubscriptionLending.getUpdatedHourlyYield(address,HourlyBondSubscriptionLending.HourlyBondMetadata)(issuer_1,REF_23)
XXXXX
lendingMeta_6(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_12'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yA_1 (-> ['TMP_55'])(BaseLending.YieldAccumulator) := TMP_55(BaseLending.YieldAccumulator)
Function name: updateHourlyBondAmount
asgn

Name: TMP_55 Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yA

Name: yA Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
yA_1 (-> ['TMP_55'])(BaseLending.YieldAccumulator) := TMP_55(BaseLending.YieldAccumulator)
XXXXX
clearning node...
clearing ir...?
REF_24(uint256) -> bond_1.amount
has variable
clearing ir...?
oldAmount_1(uint256) := REF_24(uint256)
has variable
[i] oldAmount cleared
typecheckig node...
REF_24(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_24

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
oldAmount_1(uint256) := REF_24(uint256)
Function name: updateHourlyBondAmount
asgn

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: oldAmount Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (0, -1)
Func: assign
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0
[i]Type for oldAmount

Name: oldAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
clearning node...
clearing ir...?
REF_25(uint256) -> bond_1.amount
has variable
clearing ir...?
REF_26(uint256) -> bond_1.amount
has variable
clearing ir...?
REF_27(uint256) -> yA_1 (-> ['TMP_55']).accumulatorFP
has variable
clearing ir...?
TMP_56(uint256) = INTERNAL_CALL, BaseLending.applyInterest(uint256,uint256,uint256)(REF_26,REF_27,yieldQuotientFP_1)
has variable
[i] TMP_56 cleared
clearing ir...?
bond_2(HourlyBond) := ϕ(['bond_1'])
has variable
[i] bond cleared
clearing ir...?
REF_25 (->bond_2) := TMP_56(uint256)
has variable
typecheckig node...
REF_25(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_25

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
REF_26(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_26

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
REF_27(uint256) -> yA_1 (-> ['TMP_55']).accumulatorFP
Function name: updateHourlyBondAmount
MEMBER
yA
accumulatorFP
updateHourlyBondAmount
yA Fields:
^^^
[i]Type for REF_27

Name: yA.accumulatorFP Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.accumulatorFP Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: accumulatorFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_56(uint256) = INTERNAL_CALL, BaseLending.applyInterest(uint256,uint256,uint256)(REF_26,REF_27,yieldQuotientFP_1)
Function name: updateHourlyBondAmount
Internal call...
applyInterest
REF_26
REF_27
yieldQuotientFP
Function: applyInterest
ic
Internal cal param_cache
Param: 0
    num: [1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: 0
Param: 1
    num: []
    den: []
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 2
    num: []
    den: []
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: applyInterest
Function Visibility: internal
clearning node...
clearing ir...?
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
has variable
[i] balance cleared
clearing ir...?
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
has variable
[i] accumulatorFP cleared
clearing ir...?
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
has variable
[i] yieldQuotientFP cleared
typecheckig node...
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
Function name: applyInterest
Phi
[i]Type for balance

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
Function name: applyInterest
Phi
[i]Type for accumulatorFP

Name: accumulatorFP Function: applyInterest
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
Function name: applyInterest
Phi
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: applyInterest
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_27(uint256) = balance_1 (c)* accumulatorFP_1
Function name: applyInterest
testing mul...
lnorm: u rnorm: u
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_27 Function: applyInterest
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: raw balance
[i]Type for TMP_27

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
This IR caused addback:
TMP_27(uint256) = balance_1 (c)* accumulatorFP_1
XXXXX
TMP_28(uint256) = TMP_27 (c)/ yieldQuotientFP_1
Function name: applyInterest
lnorm: u rnorm: u
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0

Name: TMP_28 Function: applyInterest
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_28 Function: applyInterest
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: raw balance
[i]Type for TMP_28

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
This IR caused addback:
TMP_28(uint256) = TMP_27 (c)/ yieldQuotientFP_1
XXXXX
RETURN TMP_28
RETURN

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
WORKLIST iteration 0 for function call "applyInterest":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: applyInterest

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
___
[i]Type for TMP_56

Name: TMP_56 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
bond_2(HourlyBond) := ϕ(['bond_1'])
Function name: updateHourlyBondAmount
Phi
[i]Type for bond

Name: bond Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
REF_25 (->bond_2) := TMP_56(uint256)
Function name: updateHourlyBondAmount
asgn

Name: TMP_56 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
u
Finance type key: (0, -1)
Func: assign
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0
[i]Type for REF_25

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
clearning node...
clearing ir...?
REF_28(uint256) -> bond_2.amount
has variable
clearing ir...?
TMP_57(uint256) = REF_28 (c)- oldAmount_1
has variable
[i] TMP_57 cleared
clearing ir...?
deltaAmount_1(uint256) := TMP_57(uint256)
has variable
[i] deltaAmount cleared
typecheckig node...
REF_28(uint256) -> bond_2.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_28

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_57(uint256) = REF_28 (c)- oldAmount_1
Function name: updateHourlyBondAmount
lnorm: 0 rnorm: 0
Finance type key: (0, 0)
Func: sub
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: 0, Left type: 0
Final dest type: 0

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: oldAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_57 Function: updateHourlyBondAmount
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for TMP_57

Name: TMP_57 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
deltaAmount_1(uint256) := TMP_57(uint256)
Function name: updateHourlyBondAmount
asgn

Name: TMP_57 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: deltaAmount Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
0
Finance type key: (0, -1)
Func: assign
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0
[i]Type for deltaAmount

Name: deltaAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
clearning node...
clearing ir...?
REF_29(BaseLending.LendingMetadata) -> lendingMeta_7[issuer_1]
has variable
clearing ir...?
REF_30(uint256) -> REF_29.totalLending
has variable
clearing ir...?
lendingMeta_8(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_7'])
has variable
clearing ir...?
REF_30(-> lendingMeta_8) = REF_30 (c)+ deltaAmount_1
has variable
typecheckig node...
REF_29(BaseLending.LendingMetadata) -> lendingMeta_7[issuer_1]
Function name: updateHourlyBondAmount
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
lendingMeta
[i]Type for REF_29

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_29(BaseLending.LendingMetadata) -> lendingMeta_7[issuer_1]
XXXXX
REF_30(uint256) -> REF_29.totalLending
Function name: updateHourlyBondAmount
MEMBER
REF_29
totalLending
updateHourlyBondAmount
REF_29 Fields:
^^^
[i]Type for REF_30

Name: REF_29.totalLending Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: REF_29.totalLending Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
lendingMeta_8(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_7'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
done.
REF_30(-> lendingMeta_8) = REF_30 (c)+ deltaAmount_1
Function name: updateHourlyBondAmount

Name: REF_30 Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
lnorm: u rnorm: 0
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: 0, Left type: 0
Final dest type: 0

Name: deltaAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_30 Function: updateHourlyBondAmount
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_30

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: totalLending Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_30(-> lendingMeta_8) = REF_30 (c)+ deltaAmount_1
XXXXX
WORKLIST iteration 0 for function call "updateHourlyBondAmount":
 New undefined nodes- 4
 Old undefined nodes- 0
typecheckig node...
issuer_1(address) := ϕ(['issuer_1'])
Function name: updateHourlyBondAmount
Phi
[i]Type for issuer

Name: issuer Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bond_1(HourlyBond) := ϕ(["bond_1 (-> ['hourlyBondAccounts'])"])
Function name: updateHourlyBondAmount
Phi
[i]Type for bond

Name: bond Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldQuotientFP, amount
Finance Type: undef
done.
lendingMeta_5(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_10', 'lendingMeta_8', 'lendingMeta_0', 'lendingMeta_4', 'lendingMeta_1', 'lendingMeta_12'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
done.
hourlyBondMetadata_3(mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)) := ϕ(['hourlyBondMetadata_0', 'hourlyBondMetadata_2', 'hourlyBondMetadata_7', 'hourlyBondMetadata_6', 'hourlyBondMetadata_4'])
Function name: updateHourlyBondAmount
Phi
[i]Type for hourlyBondMetadata

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
typecheckig node...
REF_22(uint256) -> bond_1.yieldQuotientFP
Function name: updateHourlyBondAmount
MEMBER
bond
yieldQuotientFP
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_22

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldQuotientFP_1(uint256) := REF_22(uint256)
Function name: updateHourlyBondAmount
asgn

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_54(bool) = yieldQuotientFP_1 > 0
Function name: updateHourlyBondAmount
testing gt...
val: 0
val: 0
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_54

Name: TMP_54 Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_54
Condition...
Conidtion: 
TMP_54
TMP_54
typecheckig node...
typecheckig node...
REF_23(HourlyBondSubscriptionLending.HourlyBondMetadata) -> hourlyBondMetadata_3[issuer_1]
Function name: updateHourlyBondAmount
INDEX

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_23

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
TMP_55(BaseLending.YieldAccumulator) = INTERNAL_CALL, HourlyBondSubscriptionLending.getUpdatedHourlyYield(address,HourlyBondSubscriptionLending.HourlyBondMetadata)(issuer_1,REF_23)
Function name: updateHourlyBondAmount
Internal call...
getUpdatedHourlyYield
issuer
REF_23
Function: getUpdatedHourlyYield
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [<slither.core.variables.structure_variable.StructureVariable object at 0x7f382c989190>]
    fintype: -1
0
0

Name: accumulator Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef

Name: TMP_55 Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_55

Name: TMP_55 Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
lendingMeta_6(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_12'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
done.
yA_1 (-> ['TMP_55'])(BaseLending.YieldAccumulator) := TMP_55(BaseLending.YieldAccumulator)
Function name: updateHourlyBondAmount
asgn

Name: TMP_55 Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef

Name: yA Function: updateHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yA

Name: yA Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
typecheckig node...
REF_24(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_24

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
oldAmount_1(uint256) := REF_24(uint256)
Function name: updateHourlyBondAmount
asgn

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: oldAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
0
Finance type key: (0, -1)
Func: assign
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0
[i]Type for oldAmount

Name: oldAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
typecheckig node...
REF_25(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
[W] Initializing defined variable to constant
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_25

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
REF_26(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_26

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
REF_27(uint256) -> yA_1 (-> ['TMP_55']).accumulatorFP
Function name: updateHourlyBondAmount
MEMBER
yA
accumulatorFP
updateHourlyBondAmount
yA Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
[i]Type for REF_27

Name: yA.accumulatorFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: yA.accumulatorFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
TMP_56(uint256) = INTERNAL_CALL, BaseLending.applyInterest(uint256,uint256,uint256)(REF_26,REF_27,yieldQuotientFP_1)
Function name: updateHourlyBondAmount
Internal call...
applyInterest
REF_26
REF_27
yieldQuotientFP
Function: applyInterest
ic
Internal cal param_cache
Param: 0
    num: [1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: 0
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: 20
Param: 2
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: applyInterest
Function Visibility: internal
clearning node...
clearing ir...?
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
has variable
[i] balance cleared
clearing ir...?
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
has variable
[i] accumulatorFP cleared
clearing ir...?
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
has variable
[i] yieldQuotientFP cleared
typecheckig node...
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
Function name: applyInterest
Phi
[i]Type for balance

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
Function name: applyInterest
Phi
[i]Type for accumulatorFP

Name: accumulatorFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
Function name: applyInterest
Phi
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_27(uint256) = balance_1 (c)* accumulatorFP_1
Function name: applyInterest
testing mul...
lnorm: u rnorm: u
Finance type key: (0, 20)
Func: mul
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: -1, 21: -1, 120: True}
Right type: 20, Left type: 0
Left side: 0, Right side: 20, Checked Ratio: 20
False
Final dest type: 2

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_27

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
TMP_28(uint256) = TMP_27 (c)/ yieldQuotientFP_1
Function name: applyInterest
lnorm: u rnorm: u
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 2
Final dest type: 2

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_28

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
RETURN TMP_28
RETURN

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
WORKLIST iteration 0 for function call "applyInterest":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: applyInterest

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
___
[i]Type for TMP_56

Name: TMP_56 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
bond_2(HourlyBond) := ϕ(['bond_1'])
Function name: updateHourlyBondAmount
Phi
[i]Type for bond

Name: bond Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldQuotientFP, amount
Finance Type: undef
done.
REF_25 (->bond_2) := TMP_56(uint256)
Function name: updateHourlyBondAmount
asgn

Name: TMP_56 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
u
Finance type key: (2, -1)
Func: assign
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 2
Final dest type: 2
[i]Type for REF_25

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: accrued balance

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
typecheckig node...
REF_28(uint256) -> bond_2.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_28

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_57(uint256) = REF_28 (c)- oldAmount_1
Function name: updateHourlyBondAmount
lnorm: 0 rnorm: 0
Finance type key: (0, 0)
Func: sub
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: 0, Left type: 0
Final dest type: 0

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: oldAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_57 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for TMP_57

Name: TMP_57 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
deltaAmount_1(uint256) := TMP_57(uint256)
Function name: updateHourlyBondAmount
asgn

Name: TMP_57 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: deltaAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
0
Finance type key: (0, -1)
Func: assign
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0
[i]Type for deltaAmount

Name: deltaAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
typecheckig node...
REF_29(BaseLending.LendingMetadata) -> lendingMeta_7[issuer_1]
Function name: updateHourlyBondAmount
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
lendingMeta
[i]Type for REF_29

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_29(BaseLending.LendingMetadata) -> lendingMeta_7[issuer_1]
XXXXX
REF_30(uint256) -> REF_29.totalLending
Function name: updateHourlyBondAmount
MEMBER
[W] Initializing defined variable to constant
REF_29
totalLending
updateHourlyBondAmount
REF_29 Fields:
^^^
[i]Type for REF_30

Name: REF_29.totalLending Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_29.totalLending Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: totalLending Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
lendingMeta_8(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_7'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
done.
REF_30(-> lendingMeta_8) = REF_30 (c)+ deltaAmount_1
Function name: updateHourlyBondAmount

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
initlize checks
;;;
lnorm: 0 rnorm: 0
Finance type key: (0, 0)
Func: add
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: 0, Left type: 0
Final dest type: 0

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_30

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: totalLending Function: None
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 1 for function call "updateHourlyBondAmount":
 New undefined nodes- 1
 Old undefined nodes- 4
typecheckig node...
issuer_1(address) := ϕ(['issuer_1'])
Function name: updateHourlyBondAmount
Phi
[i]Type for issuer

Name: issuer Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
bond_1(HourlyBond) := ϕ(["bond_1 (-> ['hourlyBondAccounts'])"])
Function name: updateHourlyBondAmount
Phi
[i]Type for bond

Name: bond Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldQuotientFP, amount
Finance Type: undef
done.
lendingMeta_5(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_10', 'lendingMeta_8', 'lendingMeta_0', 'lendingMeta_4', 'lendingMeta_1', 'lendingMeta_12'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
done.
hourlyBondMetadata_3(mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)) := ϕ(['hourlyBondMetadata_0', 'hourlyBondMetadata_2', 'hourlyBondMetadata_7', 'hourlyBondMetadata_6', 'hourlyBondMetadata_4'])
Function name: updateHourlyBondAmount
Phi
[i]Type for hourlyBondMetadata

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
typecheckig node...
REF_22(uint256) -> bond_1.yieldQuotientFP
Function name: updateHourlyBondAmount
MEMBER
bond
yieldQuotientFP
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_22

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldQuotientFP_1(uint256) := REF_22(uint256)
Function name: updateHourlyBondAmount
asgn

Name: bond.yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_54(bool) = yieldQuotientFP_1 > 0
Function name: updateHourlyBondAmount
testing gt...
val: 0
val: 0
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_54

Name: TMP_54 Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_54
Condition...
Conidtion: 
TMP_54
TMP_54
typecheckig node...
typecheckig node...
REF_23(HourlyBondSubscriptionLending.HourlyBondMetadata) -> hourlyBondMetadata_3[issuer_1]
Function name: updateHourlyBondAmount
INDEX

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_23

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
TMP_55(BaseLending.YieldAccumulator) = INTERNAL_CALL, HourlyBondSubscriptionLending.getUpdatedHourlyYield(address,HourlyBondSubscriptionLending.HourlyBondMetadata)(issuer_1,REF_23)
Function name: updateHourlyBondAmount
Internal call...
getUpdatedHourlyYield
issuer
REF_23
Function: getUpdatedHourlyYield
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [<slither.core.variables.structure_variable.StructureVariable object at 0x7f382c989190>]
    fintype: -1
0
0

Name: accumulator Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef

Name: TMP_55 Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
[i]Type for TMP_55

Name: TMP_55 Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
lendingMeta_6(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_12'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
done.
yA_1 (-> ['TMP_55'])(BaseLending.YieldAccumulator) := TMP_55(BaseLending.YieldAccumulator)
Function name: updateHourlyBondAmount
asgn

Name: TMP_55 Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef

Name: yA Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yA

Name: yA Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: hourlyYieldFP, lastUpdated, accumulatorFP
Finance Type: undef
done.
typecheckig node...
REF_24(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_24

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
oldAmount_1(uint256) := REF_24(uint256)
Function name: updateHourlyBondAmount
asgn

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: oldAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
0
Finance type key: (0, -1)
Func: assign
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0
[i]Type for oldAmount

Name: oldAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
typecheckig node...
REF_25(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_25

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
REF_26(uint256) -> bond_1.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_26

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
REF_27(uint256) -> yA_1 (-> ['TMP_55']).accumulatorFP
Function name: updateHourlyBondAmount
MEMBER
yA
accumulatorFP
updateHourlyBondAmount
yA Fields:
hourlyYieldFP
lastUpdated
accumulatorFP
^^^

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
[i]Type for REF_27

Name: yA.accumulatorFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: yA.accumulatorFP Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio

Name: accumulatorFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
TMP_56(uint256) = INTERNAL_CALL, BaseLending.applyInterest(uint256,uint256,uint256)(REF_26,REF_27,yieldQuotientFP_1)
Function name: updateHourlyBondAmount
Internal call...
applyInterest
REF_26
REF_27
yieldQuotientFP
Function: applyInterest
ic
Internal cal param_cache
Param: 0
    num: [1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: 0
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: 20
Param: 2
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: applyInterest
Function Visibility: internal
clearning node...
clearing ir...?
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
has variable
[i] balance cleared
clearing ir...?
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
has variable
[i] accumulatorFP cleared
clearing ir...?
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
has variable
[i] yieldQuotientFP cleared
typecheckig node...
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
Function name: applyInterest
Phi
[i]Type for balance

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
Function name: applyInterest
Phi
[i]Type for accumulatorFP

Name: accumulatorFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: simple interest ratio
done.
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
Function name: applyInterest
Phi
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_27(uint256) = balance_1 (c)* accumulatorFP_1
Function name: applyInterest
testing mul...
lnorm: u rnorm: u
Finance type key: (0, 20)
Func: mul
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: 20, Left type: 0
Left side: 0, Right side: 20, Checked Ratio: 20
False
Final dest type: 2

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_27

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
TMP_28(uint256) = TMP_27 (c)/ yieldQuotientFP_1
Function name: applyInterest
lnorm: u rnorm: u
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 2
Final dest type: 2

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_28

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
RETURN TMP_28
RETURN

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
WORKLIST iteration 0 for function call "applyInterest":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: applyInterest

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
___
[i]Type for TMP_56

Name: TMP_56 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
bond_2(HourlyBond) := ϕ(['bond_1'])
Function name: updateHourlyBondAmount
Phi
[i]Type for bond

Name: bond Function: updateHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldQuotientFP, amount
Finance Type: undef
done.
REF_25 (->bond_2) := TMP_56(uint256)
Function name: updateHourlyBondAmount
asgn

Name: TMP_56 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
u
Finance type key: (2, -1)
Func: assign
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 2
Final dest type: 2
[i]Type for REF_25

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: accrued balance

Name: REF_25 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
typecheckig node...
REF_28(uint256) -> bond_2.amount
Function name: updateHourlyBondAmount
MEMBER
bond
amount
updateHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_28

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_57(uint256) = REF_28 (c)- oldAmount_1
Function name: updateHourlyBondAmount
lnorm: 0 rnorm: 0
Finance type key: (0, 0)
Func: sub
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: 0, Left type: 0
Final dest type: 0

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: oldAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_57 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for TMP_57

Name: TMP_57 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
deltaAmount_1(uint256) := TMP_57(uint256)
Function name: updateHourlyBondAmount
asgn

Name: TMP_57 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: deltaAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
0
Finance type key: (0, -1)
Func: assign
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0
[i]Type for deltaAmount

Name: deltaAmount Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
typecheckig node...
REF_29(BaseLending.LendingMetadata) -> lendingMeta_7[issuer_1]
Function name: updateHourlyBondAmount
INDEX

Name: None Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
Name: None
lendingMeta
[i]Type for REF_29

Name: None Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
REF_29(BaseLending.LendingMetadata) -> lendingMeta_7[issuer_1]
XXXXX
REF_30(uint256) -> REF_29.totalLending
Function name: updateHourlyBondAmount
MEMBER
[W] Initializing defined variable to constant
REF_29
totalLending
updateHourlyBondAmount
REF_29 Fields:
^^^
[i]Type for REF_30

Name: REF_29.totalLending Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_29.totalLending Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: totalLending Function: None
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
lendingMeta_8(mapping(address => BaseLending.LendingMetadata)) := ϕ(['lendingMeta_7'])
Function name: updateHourlyBondAmount
Phi
[i]Type for lendingMeta

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
done.
REF_30(-> lendingMeta_8) = REF_30 (c)+ deltaAmount_1
Function name: updateHourlyBondAmount

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
initlize checks
;;;
lnorm: 0 rnorm: 0
Finance type key: (0, 0)
Func: add
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: 0, Left type: 0
Final dest type: 0

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_30

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: REF_30 Function: updateHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: totalLending Function: None
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
done.
WORKLIST iteration 2 for function call "updateHourlyBondAmount":
 New undefined nodes- 1
 Old undefined nodes- 1
Saving return values for: updateHourlyBondAmount
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
totalLending
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: viewHourlyBondAmount
Function name: viewHourlyBondAmount
Function Visibility (test): public
issuer
Finding type for issuer...
address
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: address
address
Final Type: address

Name: issuer Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
holder
Finding type for holder...
address
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: address
address
Final Type: address

Name: holder Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
-100
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
clearning node...
clearing ir...?
hourlyBondMetadata_5(mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)) := ϕ(['hourlyBondMetadata_0', 'hourlyBondMetadata_2', 'hourlyBondMetadata_7', 'hourlyBondMetadata_6', 'hourlyBondMetadata_4'])
has variable
clearing ir...?
hourlyBondAccounts_5(mapping(address => mapping(address => HourlyBond))) := ϕ(['hourlyBondAccounts_0', 'hourlyBondAccounts_5', 'hourlyBondAccounts_4'])
has variable
typecheckig node...
hourlyBondMetadata_5(mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)) := ϕ(['hourlyBondMetadata_0', 'hourlyBondMetadata_2', 'hourlyBondMetadata_7', 'hourlyBondMetadata_6', 'hourlyBondMetadata_4'])
Function name: viewHourlyBondAmount
Phi
[i]Type for hourlyBondMetadata

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
hourlyBondAccounts_5(mapping(address => mapping(address => HourlyBond))) := ϕ(['hourlyBondAccounts_0', 'hourlyBondAccounts_5', 'hourlyBondAccounts_4'])
Function name: viewHourlyBondAmount
Phi
[i]Type for hourlyBondAccounts

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_31(mapping(address => HourlyBond)) -> hourlyBondAccounts_5[issuer_1]
has variable
clearing ir...?
REF_32(HourlyBond) -> REF_31[holder_1]
has variable
clearing ir...?
bond_1 (-> ['hourlyBondAccounts'])(HourlyBond) := REF_32(HourlyBond)
has variable
[i] bond cleared
typecheckig node...
REF_31(mapping(address => HourlyBond)) -> hourlyBondAccounts_5[issuer_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_31

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
REF_32(HourlyBond) -> REF_31[holder_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_32

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
bond_1 (-> ['hourlyBondAccounts'])(HourlyBond) := REF_32(HourlyBond)
Function name: viewHourlyBondAmount
asgn

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef

Name: bond Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for bond

Name: bond Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_33(uint256) -> bond_1 (-> ['hourlyBondAccounts']).yieldQuotientFP
has variable
clearing ir...?
yieldQuotientFP_1(uint256) := REF_33(uint256)
has variable
[i] yieldQuotientFP cleared
typecheckig node...
REF_33(uint256) -> bond_1 (-> ['hourlyBondAccounts']).yieldQuotientFP
Function name: viewHourlyBondAmount
MEMBER
bond
yieldQuotientFP
viewHourlyBondAmount
bond Fields:
amount
^^^
[i]Type for REF_33

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldQuotientFP_1(uint256) := REF_33(uint256)
Function name: viewHourlyBondAmount
asgn

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
yieldQuotientFP_1(uint256) := REF_33(uint256)
XXXXX
clearning node...
clearing ir...?
REF_34(HourlyBondSubscriptionLending.HourlyBondMetadata) -> hourlyBondMetadata_5[issuer_1]
has variable
clearing ir...?
REF_35(BaseLending.YieldAccumulator) -> REF_34.yieldAccumulator
has variable
clearing ir...?
TMP_58(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.viewCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(REF_35,block.timestamp)
has variable
[i] TMP_58 cleared
clearing ir...?
cumulativeYield_1(uint256) := TMP_58(uint256)
has variable
[i] cumulativeYield cleared
typecheckig node...
REF_34(HourlyBondSubscriptionLending.HourlyBondMetadata) -> hourlyBondMetadata_5[issuer_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_34

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
REF_35(BaseLending.YieldAccumulator) -> REF_34.yieldAccumulator
Function name: viewHourlyBondAmount
MEMBER
hourlyBondMetadata
yieldAccumulator
global
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
[i]Type for REF_35

Name: hourlyBondMetadata.yieldAccumulator Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: hourlyBondMetadata.yieldAccumulator Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
TMP_58(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.viewCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(REF_35,block.timestamp)
Function name: viewHourlyBondAmount
Internal call...
viewCumulativeYieldFP
REF_35
block.timestamp
Function: viewCumulativeYieldFP
ic
block.timestamp
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [<slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: viewCumulativeYieldFP
Function Visibility: internal
clearning node...
clearing ir...?
yA_1 (-> [])(BaseLending.YieldAccumulator) := ϕ(['REF_35'])
has variable
[i] yA cleared
clearing ir...?
timestamp_1(uint256) := ϕ(['block.timestamp'])
has variable
[i] timestamp cleared
typecheckig node...
yA_1 (-> [])(BaseLending.YieldAccumulator) := ϕ(['REF_35'])
Function name: viewCumulativeYieldFP
Phi
[i]Type for yA

Name: yA Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
timestamp_1(uint256) := ϕ(['block.timestamp'])
Function name: viewCumulativeYieldFP
Phi
[i]Type for timestamp

Name: timestamp Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
clearning node...
clearing ir...?
REF_72(uint256) -> yA_1 (-> []).lastUpdated
has variable
clearing ir...?
TMP_91(uint256) = timestamp_1 (c)- REF_72
has variable
[i] TMP_91 cleared
clearing ir...?
timeDelta_1(uint256) := TMP_91(uint256)
has variable
[i] timeDelta cleared
typecheckig node...
REF_72(uint256) -> yA_1 (-> []).lastUpdated
Function name: viewCumulativeYieldFP
MEMBER
yA
lastUpdated
viewCumulativeYieldFP
yA Fields:
accumulatorFP
^^^
[i]Type for REF_72

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_91(uint256) = timestamp_1 (c)- REF_72
Function name: viewCumulativeYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: timestamp Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timestamp Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_91 Function: viewCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_91

Name: TMP_91 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_91(uint256) = timestamp_1 (c)- REF_72
XXXXX
timeDelta_1(uint256) := TMP_91(uint256)
Function name: viewCumulativeYieldFP
asgn

Name: TMP_91 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: viewCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_92(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(yA_1 (-> []),timeDelta_1)
Function name: viewCumulativeYieldFP
Internal call...
calcCumulativeYieldFP
yA
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [lastUpdated, <slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_92 Function: viewCumulativeYieldFP
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_92

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
RETURN TMP_92
RETURN

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
WORKLIST iteration 0 for function call "viewCumulativeYieldFP":
 New undefined nodes- 1
 Old undefined nodes- 0
typecheckig node...
yA_1 (-> [])(BaseLending.YieldAccumulator) := ϕ(['REF_35'])
Function name: viewCumulativeYieldFP
Phi
[i]Type for yA

Name: yA Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: lastUpdated, accumulatorFP
Finance Type: undef
done.
timestamp_1(uint256) := ϕ(['block.timestamp'])
Function name: viewCumulativeYieldFP
Phi
[i]Type for timestamp

Name: timestamp Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_72(uint256) -> yA_1 (-> []).lastUpdated
Function name: viewCumulativeYieldFP
MEMBER
yA
lastUpdated
viewCumulativeYieldFP
yA Fields:
lastUpdated
accumulatorFP
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_72

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_91(uint256) = timestamp_1 (c)- REF_72
Function name: viewCumulativeYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: timestamp Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_91 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_91

Name: TMP_91 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDelta_1(uint256) := TMP_91(uint256)
Function name: viewCumulativeYieldFP
asgn

Name: TMP_91 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_92(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(yA_1 (-> []),timeDelta_1)
Function name: viewCumulativeYieldFP
Internal call...
calcCumulativeYieldFP
yA
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [lastUpdated, <slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_92

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
RETURN TMP_92
RETURN

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
WORKLIST iteration 1 for function call "viewCumulativeYieldFP":
 New undefined nodes- 0
 Old undefined nodes- 1
typecheckig node...
yA_1 (-> [])(BaseLending.YieldAccumulator) := ϕ(['REF_35'])
Function name: viewCumulativeYieldFP
Phi
[i]Type for yA

Name: yA Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: lastUpdated, accumulatorFP
Finance Type: undef
done.
timestamp_1(uint256) := ϕ(['block.timestamp'])
Function name: viewCumulativeYieldFP
Phi
[i]Type for timestamp

Name: timestamp Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_72(uint256) -> yA_1 (-> []).lastUpdated
Function name: viewCumulativeYieldFP
MEMBER
yA
lastUpdated
viewCumulativeYieldFP
yA Fields:
lastUpdated
accumulatorFP
^^^

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_72

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: lastUpdated Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
TMP_91(uint256) = timestamp_1 (c)- REF_72
Function name: viewCumulativeYieldFP
lnorm: u rnorm: u
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: timestamp Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yA.lastUpdated Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: TMP_91 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_91

Name: TMP_91 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
timeDelta_1(uint256) := TMP_91(uint256)
Function name: viewCumulativeYieldFP
asgn

Name: TMP_91 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: timeDelta Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for timeDelta

Name: timeDelta Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_92(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.calcCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(yA_1 (-> []),timeDelta_1)
Function name: viewCumulativeYieldFP
Internal call...
calcCumulativeYieldFP
yA
timeDelta
Function: calcCumulativeYieldFP
ic
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [lastUpdated, <slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: accumulatorFP Function: calcCumulativeYieldFP
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_92

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
RETURN TMP_92
RETURN

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
WORKLIST iteration 2 for function call "viewCumulativeYieldFP":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: viewCumulativeYieldFP

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
___
[i]Type for TMP_58

Name: TMP_58 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
cumulativeYield_1(uint256) := TMP_58(uint256)
Function name: viewHourlyBondAmount
asgn

Name: TMP_58 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: cumulativeYield Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for cumulativeYield

Name: cumulativeYield Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
clearning node...
clearing ir...?
TMP_59(bool) = yieldQuotientFP_1 > 0
has variable
[i] TMP_59 cleared
clearing ir...?
CONDITION TMP_59
typecheckig node...
TMP_59(bool) = yieldQuotientFP_1 > 0
Function name: viewHourlyBondAmount
testing gt...
val: 0
val: 0
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
val: 0

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef

Name: TMP_59 Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_59

Name: TMP_59 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
This IR caused addback:
TMP_59(bool) = yieldQuotientFP_1 > 0
XXXXX
CONDITION TMP_59
Condition...
Conidtion: 
TMP_59
TMP_59
clearning node...
clearing ir...?
REF_36(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
has variable
clearing ir...?
REF_37(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
has variable
clearing ir...?
TMP_60(uint256) = INTERNAL_CALL, BaseLending.applyInterest(uint256,uint256,uint256)(REF_37,cumulativeYield_1,yieldQuotientFP_1)
has variable
[i] TMP_60 cleared
clearing ir...?
TMP_61(uint256) = REF_36 (c)+ TMP_60
has variable
[i] TMP_61 cleared
clearing ir...?
RETURN TMP_61
typecheckig node...
REF_36(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_36

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
REF_37(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_37

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_60(uint256) = INTERNAL_CALL, BaseLending.applyInterest(uint256,uint256,uint256)(REF_37,cumulativeYield_1,yieldQuotientFP_1)
Function name: viewHourlyBondAmount
Internal call...
applyInterest
REF_37
cumulativeYield
yieldQuotientFP
Function: applyInterest
ic
Internal cal param_cache
Param: 0
    num: [1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: 0
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: 120
Param: 2
    num: []
    den: []
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: applyInterest
Function Visibility: internal
clearning node...
clearing ir...?
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
has variable
[i] balance cleared
clearing ir...?
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
has variable
[i] accumulatorFP cleared
clearing ir...?
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
has variable
[i] yieldQuotientFP cleared
typecheckig node...
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
Function name: applyInterest
Phi
[i]Type for balance

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
Function name: applyInterest
Phi
[i]Type for accumulatorFP

Name: accumulatorFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
Function name: applyInterest
Phi
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: applyInterest
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_27(uint256) = balance_1 (c)* accumulatorFP_1
Function name: applyInterest
testing mul...
lnorm: u rnorm: u
Finance type key: (0, 20)
Func: mul
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: 120, Left type: 0
Left side: 0, Right side: 20, Checked Ratio: 20
True
Inconsistent updating of 20 by 0 and 120
Error with TMP_27 in function applyInterest
Error with: TMP_27 in function applyInterest
[W] Initializing defined variable to constant
[<slither.slithir.variables.temporary_ssa.TemporaryVariableSSA object at 0x7f382c460520>]

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_27 Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_27

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
TMP_28(uint256) = TMP_27 (c)/ yieldQuotientFP_1
Function name: applyInterest
lnorm: u rnorm: u
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 2
Final dest type: 2

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_28

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
This IR caused addback:
TMP_28(uint256) = TMP_27 (c)/ yieldQuotientFP_1
XXXXX
RETURN TMP_28
RETURN

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
WORKLIST iteration 0 for function call "applyInterest":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: applyInterest

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
___
[i]Type for TMP_60

Name: TMP_60 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
TMP_61(uint256) = REF_36 (c)+ TMP_60
Function name: viewHourlyBondAmount

Name: TMP_61 Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
lnorm: 0 rnorm: u
Finance type key: (0, 2)
Error with TMP_61 in function viewHourlyBondAmount
Error with: TMP_61 in function viewHourlyBondAmount
[<slither.slithir.variables.temporary_ssa.TemporaryVariableSSA object at 0x7f382c460520>, <slither.slithir.variables.temporary_ssa.TemporaryVariableSSA object at 0x7f382c370850>]

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_61 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_61

Name: TMP_61 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
RETURN TMP_61
RETURN

Name: TMP_61 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
clearning node...
typecheckig node...
clearning node...
clearing ir...?
REF_38(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
has variable
clearing ir...?
TMP_62(uint256) = REF_38 (c)+ 0
has variable
[i] TMP_62 cleared
clearing ir...?
RETURN TMP_62
typecheckig node...
REF_38(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_38

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_62(uint256) = REF_38 (c)+ 0
Function name: viewHourlyBondAmount
val: 0

Name: TMP_62 Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
val: 0
lnorm: 0 rnorm: 0
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_62 Function: viewHourlyBondAmount
Num: 
Den: 
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for TMP_62

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
RETURN TMP_62
RETURN

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
WORKLIST iteration 0 for function call "viewHourlyBondAmount":
 New undefined nodes- 2
 Old undefined nodes- 0
typecheckig node...
hourlyBondMetadata_5(mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)) := ϕ(['hourlyBondMetadata_0', 'hourlyBondMetadata_2', 'hourlyBondMetadata_7', 'hourlyBondMetadata_6', 'hourlyBondMetadata_4'])
Function name: viewHourlyBondAmount
Phi
[i]Type for hourlyBondMetadata

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
hourlyBondAccounts_5(mapping(address => mapping(address => HourlyBond))) := ϕ(['hourlyBondAccounts_0', 'hourlyBondAccounts_5', 'hourlyBondAccounts_4'])
Function name: viewHourlyBondAmount
Phi
[i]Type for hourlyBondAccounts

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
typecheckig node...
REF_31(mapping(address => HourlyBond)) -> hourlyBondAccounts_5[issuer_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_31

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
REF_32(HourlyBond) -> REF_31[holder_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_32

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
bond_1 (-> ['hourlyBondAccounts'])(HourlyBond) := REF_32(HourlyBond)
Function name: viewHourlyBondAmount
asgn

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef

Name: bond Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldQuotientFP, amount
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for bond

Name: bond Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldQuotientFP, amount
Finance Type: undef
done.
typecheckig node...
REF_33(uint256) -> bond_1 (-> ['hourlyBondAccounts']).yieldQuotientFP
Function name: viewHourlyBondAmount
MEMBER
bond
yieldQuotientFP
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_33

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldQuotientFP_1(uint256) := REF_33(uint256)
Function name: viewHourlyBondAmount
asgn

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_34(HourlyBondSubscriptionLending.HourlyBondMetadata) -> hourlyBondMetadata_5[issuer_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_34

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
REF_35(BaseLending.YieldAccumulator) -> REF_34.yieldAccumulator
Function name: viewHourlyBondAmount
MEMBER
hourlyBondMetadata
yieldAccumulator
global
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
[i]Type for REF_35

Name: hourlyBondMetadata.yieldAccumulator Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: hourlyBondMetadata.yieldAccumulator Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
TMP_58(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.viewCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(REF_35,block.timestamp)
Function name: viewHourlyBondAmount
Internal call...
viewCumulativeYieldFP
REF_35
block.timestamp
Function: viewCumulativeYieldFP
ic
block.timestamp
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [<slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_58 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_58

Name: TMP_58 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
cumulativeYield_1(uint256) := TMP_58(uint256)
Function name: viewHourlyBondAmount
asgn

Name: TMP_58 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: cumulativeYield Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
u
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for cumulativeYield

Name: cumulativeYield Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
typecheckig node...
TMP_59(bool) = yieldQuotientFP_1 > 0
Function name: viewHourlyBondAmount
testing gt...
val: 0
val: 0
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_59

Name: TMP_59 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_59
Condition...
Conidtion: 
TMP_59
TMP_59
typecheckig node...
REF_36(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_36

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
REF_37(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_37

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_60(uint256) = INTERNAL_CALL, BaseLending.applyInterest(uint256,uint256,uint256)(REF_37,cumulativeYield_1,yieldQuotientFP_1)
Function name: viewHourlyBondAmount
Internal call...
applyInterest
REF_37
cumulativeYield
yieldQuotientFP
Function: applyInterest
ic
Internal cal param_cache
Param: 0
    num: [1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: 0
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: 120
Param: 2
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: applyInterest
Function Visibility: internal
clearning node...
clearing ir...?
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
has variable
[i] balance cleared
clearing ir...?
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
has variable
[i] accumulatorFP cleared
clearing ir...?
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
has variable
[i] yieldQuotientFP cleared
typecheckig node...
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
Function name: applyInterest
Phi
[i]Type for balance

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
Function name: applyInterest
Phi
[i]Type for accumulatorFP

Name: accumulatorFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
Function name: applyInterest
Phi
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_27(uint256) = balance_1 (c)* accumulatorFP_1
Function name: applyInterest
testing mul...
lnorm: u rnorm: u
Finance type key: (0, 20)
Func: mul
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: 120, Left type: 0
Left side: 0, Right side: 20, Checked Ratio: 20
True
Inconsistent updating of 20 by 0 and 120
[W] Initializing defined variable to constant

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_27 Function: applyInterest
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_27

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
TMP_28(uint256) = TMP_27 (c)/ yieldQuotientFP_1
Function name: applyInterest
lnorm: u rnorm: u
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 2
Final dest type: 2

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_28

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
RETURN TMP_28
RETURN

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
WORKLIST iteration 0 for function call "applyInterest":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: applyInterest

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
___
[i]Type for TMP_60

Name: TMP_60 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
TMP_61(uint256) = REF_36 (c)+ TMP_60
Function name: viewHourlyBondAmount

Name: TMP_61 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
lnorm: 0 rnorm: u
Finance type key: (0, 2)
[W] Initializing defined variable to constant

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_61 Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_61

Name: TMP_61 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
RETURN TMP_61
RETURN

Name: TMP_61 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
typecheckig node...
typecheckig node...
REF_38(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_38

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_62(uint256) = REF_38 (c)+ 0
Function name: viewHourlyBondAmount
val: 0

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
initlize checks
;;;
val: 0
lnorm: 0 rnorm: 0
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for TMP_62

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
RETURN TMP_62
RETURN

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
WORKLIST iteration 1 for function call "viewHourlyBondAmount":
 New undefined nodes- 0
 Old undefined nodes- 2
typecheckig node...
hourlyBondMetadata_5(mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)) := ϕ(['hourlyBondMetadata_0', 'hourlyBondMetadata_2', 'hourlyBondMetadata_7', 'hourlyBondMetadata_6', 'hourlyBondMetadata_4'])
Function name: viewHourlyBondAmount
Phi
[i]Type for hourlyBondMetadata

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
hourlyBondAccounts_5(mapping(address => mapping(address => HourlyBond))) := ϕ(['hourlyBondAccounts_0', 'hourlyBondAccounts_5', 'hourlyBondAccounts_4'])
Function name: viewHourlyBondAmount
Phi
[i]Type for hourlyBondAccounts

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
typecheckig node...
REF_31(mapping(address => HourlyBond)) -> hourlyBondAccounts_5[issuer_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_31

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
REF_32(HourlyBond) -> REF_31[holder_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_32

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
done.
bond_1 (-> ['hourlyBondAccounts'])(HourlyBond) := REF_32(HourlyBond)
Function name: viewHourlyBondAmount
asgn

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef

Name: bond Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldQuotientFP, amount
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for bond

Name: bond Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldQuotientFP, amount
Finance Type: undef
done.
typecheckig node...
REF_33(uint256) -> bond_1 (-> ['hourlyBondAccounts']).yieldQuotientFP
Function name: viewHourlyBondAmount
MEMBER
bond
yieldQuotientFP
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for REF_33

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: None
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
yieldQuotientFP_1(uint256) := REF_33(uint256)
Function name: viewHourlyBondAmount
asgn

Name: bond.yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef

Name: yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
u
Finance type key: (-1, -1)
Func: assign
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
REF_34(HourlyBondSubscriptionLending.HourlyBondMetadata) -> hourlyBondMetadata_5[issuer_1]
Function name: viewHourlyBondAmount
INDEX

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
Name: global
REFERENCE LEFT VALUE PROPAGATION
[i]Type for REF_34

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
done.
REF_35(BaseLending.YieldAccumulator) -> REF_34.yieldAccumulator
Function name: viewHourlyBondAmount
MEMBER
hourlyBondMetadata
yieldAccumulator
global
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
[i]Type for REF_35

Name: hourlyBondMetadata.yieldAccumulator Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: hourlyBondMetadata.yieldAccumulator Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef

Name: yieldAccumulator Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: accumulatorFP
Finance Type: undef
done.
TMP_58(uint256) = INTERNAL_CALL, HourlyBondSubscriptionLending.viewCumulativeYieldFP(BaseLending.YieldAccumulator,uint256)(REF_35,block.timestamp)
Function name: viewHourlyBondAmount
Internal call...
viewCumulativeYieldFP
REF_35
block.timestamp
Function: viewCumulativeYieldFP
ic
block.timestamp
Internal cal param_cache
Param: 0
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: [<slither.core.variables.structure_variable.StructureVariable object at 0x7f382c9892e0>]
    fintype: -1
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
0
0

Name: TMP_92 Function: viewCumulativeYieldFP
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: TMP_58 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
[i]Type for TMP_58

Name: TMP_58 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
cumulativeYield_1(uint256) := TMP_58(uint256)
Function name: viewHourlyBondAmount
asgn

Name: TMP_58 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio

Name: cumulativeYield Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
u
Finance type key: (20, -1)
Func: assign
Dest type: 120, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 120
Final dest type: 120
[i]Type for cumulativeYield

Name: cumulativeYield Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
typecheckig node...
TMP_59(bool) = yieldQuotientFP_1 > 0
Function name: viewHourlyBondAmount
testing gt...
val: 0
val: 0
lnorm: u rnorm: 0
Dest type: -1, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: -1
Final dest type: -1

Name: 0 Function: None
Num: -1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: undef
True
[i]Type for TMP_59

Name: TMP_59 Function: viewHourlyBondAmount
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
CONDITION TMP_59
Condition...
Conidtion: 
TMP_59
TMP_59
typecheckig node...
REF_36(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_36

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
REF_37(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_37

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_60(uint256) = INTERNAL_CALL, BaseLending.applyInterest(uint256,uint256,uint256)(REF_37,cumulativeYield_1,yieldQuotientFP_1)
Function name: viewHourlyBondAmount
Internal call...
applyInterest
REF_37
cumulativeYield
yieldQuotientFP
Function: applyInterest
ic
Internal cal param_cache
Param: 0
    num: [1]
    den: [-1]
    norm: 0
    link: None
    fields: []
    fintype: 0
Param: 1
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: 120
Param: 2
    num: [-1]
    den: [-1]
    norm: u
    link: None
    fields: []
    fintype: -1
-100
added
xyz
Function name: applyInterest
Function Visibility: internal
clearning node...
clearing ir...?
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
has variable
[i] balance cleared
clearing ir...?
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
has variable
[i] accumulatorFP cleared
clearing ir...?
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
has variable
[i] yieldQuotientFP cleared
typecheckig node...
balance_1(uint256) := ϕ(['REF_37', 'REF_26'])
Function name: applyInterest
Phi
[i]Type for balance

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance
done.
accumulatorFP_1(uint256) := ϕ(['REF_27', 'cumulativeYield_1'])
Function name: applyInterest
Phi
[i]Type for accumulatorFP

Name: accumulatorFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: updated simple interest ratio
done.
yieldQuotientFP_1(uint256) := ϕ(['yieldQuotientFP_1', 'yieldQuotientFP_1'])
Function name: applyInterest
Phi
[i]Type for yieldQuotientFP

Name: yieldQuotientFP Function: applyInterest
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
typecheckig node...
TMP_27(uint256) = balance_1 (c)* accumulatorFP_1
Function name: applyInterest
testing mul...
lnorm: u rnorm: u
Finance type key: (0, 20)
Func: mul
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: 120, Left type: 0
Left side: 0, Right side: 20, Checked Ratio: 20
True
Inconsistent updating of 20 by 0 and 120
[W] Initializing defined variable to constant

Name: balance Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_27 Function: applyInterest
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_27

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
TMP_28(uint256) = TMP_27 (c)/ yieldQuotientFP_1
Function name: applyInterest
lnorm: u rnorm: u
Dest type: 2, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 2
Final dest type: 2

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_27 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
[i]Type for TMP_28

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
RETURN TMP_28
RETURN

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
WORKLIST iteration 0 for function call "applyInterest":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: applyInterest

Name: TMP_28 Function: applyInterest
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
___
[i]Type for TMP_60

Name: TMP_60 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: accrued balance
done.
TMP_61(uint256) = REF_36 (c)+ TMP_60
Function name: viewHourlyBondAmount

Name: TMP_61 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
initlize checks
;;;
lnorm: 0 rnorm: u
Finance type key: (0, 2)
[W] Initializing defined variable to constant

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_61 Function: viewHourlyBondAmount
Num: 
Den: 
Norm: u
LF: None
Fields: 
Finance Type: undef
[i]Type for TMP_61

Name: TMP_61 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
done.
RETURN TMP_61
RETURN

Name: TMP_61 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
typecheckig node...
typecheckig node...
REF_38(uint256) -> bond_1 (-> ['hourlyBondAccounts']).amount
Function name: viewHourlyBondAmount
MEMBER
bond
amount
viewHourlyBondAmount
bond Fields:
yieldQuotientFP
amount
^^^

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for REF_38

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: amount Function: global
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
TMP_62(uint256) = REF_38 (c)+ 0
Function name: viewHourlyBondAmount
val: 0

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
initlize checks
;;;
val: 0
lnorm: 0 rnorm: 0
Dest type: 0, Update_ratios: {10: -1, 12: -1, 20: False, 21: -1, 120: True}
Right type: -1, Left type: 0
Final dest type: 0

Name: bond.amount Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
[i]Type for TMP_62

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
done.
RETURN TMP_62
RETURN

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
WORKLIST iteration 2 for function call "viewHourlyBondAmount":
 New undefined nodes- 0
 Old undefined nodes- 0
Saving return values for: viewHourlyBondAmount

Name: TMP_62 Function: viewHourlyBondAmount
Num: 1
Den: -1
Norm: 0
LF: None
Fields: 
Finance Type: raw balance
___
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
totalLending
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: _withdrawHourlyBond
Function _withdrawHourlyBond not marked
Mark Iterations TRUE, proceeding anyway
Function name: _withdrawHourlyBond
Function Visibility (test): internal
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
totalLending
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: calcCumulativeYieldFP
Function calcCumulativeYieldFP not marked
Mark Iterations TRUE, proceeding anyway
Function name: calcCumulativeYieldFP
Function Visibility (test): internal
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
totalLending
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: getUpdatedHourlyYield
Function getUpdatedHourlyYield not marked
Mark Iterations TRUE, proceeding anyway
Function name: getUpdatedHourlyYield
Function Visibility (test): internal
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
totalLending
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: viewCumulativeYieldFP
Function viewCumulativeYieldFP not marked
Mark Iterations TRUE, proceeding anyway
Function name: viewCumulativeYieldFP
Function Visibility (test): internal
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
totalLending
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: slitherConstructorVariables
Function slitherConstructorVariables not marked
Mark Iterations TRUE, proceeding anyway
Function name: slitherConstructorVariables
Function Visibility (test): internal
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
totalLending
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Reading Function: slitherConstructorConstantVariables
Function slitherConstructorConstantVariables not marked
Mark Iterations TRUE, proceeding anyway
Function name: slitherConstructorConstantVariables
Function Visibility (test): internal
State_var: hourlyBondMetadata
Finding type for hourlyBondMetadata...
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
mapping(address => HourlyBondSubscriptionLending.HourlyBondMetadata)
HourlyBondSubscriptionLending.HourlyBondMetadata
Final Type: HourlyBondSubscriptionLending.HourlyBondMetadata
global
hourlyBondMetadata
yieldAccumulator
Check copy_toekn_tuple
([-1], [-1], ['u'], None, -1)
----
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
yieldAccumulator
accumulatorFP
global
yieldAccumulator
lastUpdated
global
yieldAccumulator
hourlyYieldFP
FIELDS:
yieldAccumulator Fields:
accumulatorFP
^^^
Type: BaseLending.YieldAccumulator
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
hourlyBondMetadata.yieldAccumulator
accumulatorFP
Check copy_toekn_tuple
([-1], [-1], ['u'], None, 20)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondMetadata.yieldAccumulator
lastUpdated
global
hourlyBondMetadata.yieldAccumulator
hourlyYieldFP
FIELDS:
hourlyBondMetadata.yieldAccumulator Fields:
accumulatorFP
^^^
global
hourlyBondMetadata
buyingSpeed
global
hourlyBondMetadata
withdrawingSpeed
global
hourlyBondMetadata
lastBought
global
hourlyBondMetadata
lastWithdrawn
FIELDS:
hourlyBondMetadata Fields:
yieldAccumulator
^^^

Name: hourlyBondMetadata Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: yieldAccumulator
Finance Type: undef
[*]Type fetched successfully
State_var: lendingMeta
Finding type for lendingMeta...
mapping(address => BaseLending.LendingMetadata)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.LendingMetadata)
mapping(address => BaseLending.LendingMetadata)
BaseLending.LendingMetadata
Final Type: BaseLending.LendingMetadata
global
lendingMeta
totalLending
global
lendingMeta
totalBorrowed
global
lendingMeta
lendingBuffer
global
lendingMeta
lendingCap
FIELDS:
lendingMeta Fields:
totalLending
^^^

Name: lendingMeta Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: totalLending
Finance Type: undef
[*]Type fetched successfully
State_var: withdrawalWindow
Finding type for withdrawalWindow...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: withdrawalWindow Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: hourlyBondAccounts
Finding type for hourlyBondAccounts...
mapping(address => mapping(address => HourlyBond))
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => mapping(address => HourlyBond))
mapping(address => mapping(address => HourlyBond))
mapping(address => HourlyBond)
HourlyBond
Final Type: HourlyBond
global
hourlyBondAccounts
amount
Check copy_toekn_tuple
([1], [-1], [0], None, 0)
----
Type: uint256
uint256
Final Type: uint256
Type: uint256
uint256
Final Type: uint256
global
hourlyBondAccounts
yieldQuotientFP
global
hourlyBondAccounts
moduloHour
FIELDS:
hourlyBondAccounts Fields:
amount
^^^

Name: hourlyBondAccounts Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: amount
Finance Type: undef
[*]Type fetched successfully
State_var: yieldChangePerSecondFP
Finding type for yieldChangePerSecondFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: yieldChangePerSecondFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowYieldAccumulators
Finding type for borrowYieldAccumulators...
mapping(address => BaseLending.YieldAccumulator)
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: mapping(address => BaseLending.YieldAccumulator)
mapping(address => BaseLending.YieldAccumulator)
BaseLending.YieldAccumulator
Final Type: BaseLending.YieldAccumulator
global
borrowYieldAccumulators
accumulatorFP
global
borrowYieldAccumulators
lastUpdated
global
borrowYieldAccumulators
hourlyYieldFP
FIELDS:
borrowYieldAccumulators Fields:
^^^

Name: borrowYieldAccumulators Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: borrowingFactorPercent
Finding type for borrowingFactorPercent...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: borrowingFactorPercent Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: maxHourlyYieldFP
Finding type for maxHourlyYieldFP...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: maxHourlyYieldFP Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
State_var: FP32
Finding type for FP32...
uint256
Check copy_toekn_tuple
(-1, -1, 'u', None, -1)
----
Type: uint256
uint256
Final Type: uint256

Name: FP32 Function: global
Num: -1
Den: -1
Norm: u
LF: None
Fields: 
Finance Type: undef
[*]Type fetched successfully
Errors: [<slither.slithir.variables.temporary_ssa.TemporaryVariableSSA object at 0x7f382c460520>, <slither.slithir.variables.temporary_ssa.TemporaryVariableSSA object at 0x7f382c370850>]
Function count: 19
Hello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello WorldHello World